[英]Issue with Maven war Plugin
我正在使用 maven 打包我的 war 文件。 我有一些依賴項作為范圍提供。 當我進行 maven 全新安裝時,war 已成功創建,但具有提供的范圍的 jar 的傳遞依賴項包含在我的 lib 目錄中。 有什么辦法可以去除它們嗎?
示例場景:以下是我在 pom 中的依賴項之一
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>${resteasy.version}</version>
<scope>provided</scope>
</dependency>
這個包括 jar activation-1.1.jar。 resteasy-jaxrs 的依賴樹也如下所示。
[INFO] +- org.jboss.resteasy:resteasy-jaxrs:jar:2.3.6.Final:provided
[INFO] | +- org.jboss.resteasy:jaxrs-api:jar:2.3.6.Final:provided
[INFO] | +- javax.annotation:jsr250-api:jar:1.0:compile
[INFO] | +- javax.activation:activation:jar:1.1:compile
[INFO] | +- org.apache.httpcomponents:httpclient:jar:4.1.2:provided
[INFO] | | \- org.apache.httpcomponents:httpcore:jar:4.1.2:provided
[INFO] | \- net.jcip:jcip-annotations:jar:1.0:compile
最簡單的方法是創建一個<dependencyManagement>
標記並將子依賴項放入其中並將范圍設置為提供:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>jsr250-api</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
</dependencyManagement>
這樣你的傳遞依賴的范圍就會被覆蓋:
[INFO] | +- javax.annotation:jsr250-api:jar:1.0:provided (scope managed from compile)
[INFO] | +- javax.activation:activation:jar:1.1:provided (scope managed from compile)
在檢查dependency:tree
之前,一定要執行Maven-> Update Project
並檢查Force Update
復選框。
如果我的庫中有如此多的傳遞依賴項,則上述解決方案是不可能的。 終於得到了工作正常的 maven 排除。
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>${resteasy.version}</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<artifactId>*</artifactId>
<groupId>*</groupId>
</exclusion>
</exclusions>
</dependency>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.