簡體   English   中英

Maven管理的依賴項與聲明了不同名稱的依賴項之間發生沖突

[英]Conflict between maven managed dependency and declared one with different names

我正在運行一個Websphere 7項目。 Pom結構如下:

我的項目

<parent>
    <groupId>company</groupId>
    <artifactId>websphere-superpom</artifactId>
    <version>version</version>
</parent>
<dependencies>
    ...
    <dependency>
        <groupId>javax.el</groupId>
        <artifactId>javax.el-api</artifactId>
        <version>2.2.5</version>
    </dependency>
</dependencies>
...

超級球

<dependencies>
    ...
    <dependency>
        <groupId>com.ibm.websphere</groupId>
        <artifactId>runtime-dependencies</artifactId>
        <version>version</version>
        <type>pom</type>
        <scope>provided</scope>
    </dependency>
</dependencies>

運行時依賴

<dependencies>
    ...
    <dependency>
        <groupId>com.ibm.websphere</groupId>
        <artifactId>j2ee</artifactId>
        <version>version</version>
    </dependency>
</dependencies>

Artifact j2ee包含幾個軟件包,其中還有javax.el ,它在我在項目的pom中聲明的那個軟件包之前被加載。

我使用選項-verbose:class運行JUnit測試,並且輸出確認了此問題。

[Loaded javax.el.ExpressionFactory from file:/C:/Program Files (x86)/IBM/SDP/runtimes/base_v7/lib/j2ee.jar]

然后,我在Maven控制台中運行以下命令:

mvn dependency:analyze -DcheckDuplicateClasses

我得到的輸出是這樣的:

[WARNING] Unused declared dependencies found:
...
[WARNING]    javax.el:javax.el-api:jar:2.2.5:compile
...

如何告訴Maven從我在項目的pom中聲明的庫中加載ExpressionFactory? 我無法更改websphere-superpom,因為它是公司管理的工件。

編輯:按照watery的要求,我嘗試在項目的pom中重新聲明有問題的依賴項,如下所示:

<dependency>
    <groupId>com.ibm.websphere</groupId>
    <artifactId>runtime-dependencies</artifactId>
    <version>version</version>
    <exclusions>
        <exclusion>
            <groupId>com.ibm.websphere</groupId>
            <artifactId>j2ee</artifactId>
        </exclusion>
    </exclusions>
</dependency>

但是后來Maven告訴我:

Could not resolve dependencies for project ....: Failure to find com.ibm.websphere:runtime-dependencies:jar in nexus url

如果可以修改父級依賴項,則可以使用maven排除項

在websphere-superpom中:

<dependency>
    <groupId>com.ibm.websphere</groupId>
    <artifactId>runtime-dependencies</artifactId>
    <version>version</version>
    <type>pom</type>
    <scope>provided</scope>
    <exclusions>
        <exclusion>
          <groupId>javax.el</groupId>
          <artifactId>javax.el-api</artifactId>
        </exclusion>
    </exclusions> 
</dependency>

編輯:
如果您使用watery的建議,請不要忘記按提供的那樣設置此運行時依賴項的范圍。 因為現在Maven嘗試在您的聯系倉庫中搜索它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM