jos*_*ain 6 java dependency-management maven
我正在应用程序服务器环境中工作,在该环境中我使用 bom 来收集依赖项信息,如下所示:
<dependency>
<groupId>org.jboss.bom.eap</groupId>
<artifactId>jboss-javaee-6.0-with-security</artifactId>
<version>${jboss.bom.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
但是,这个特定的 bom 将依赖项指定为“编译”,我希望将其范围限定为“提供”的所有项目。但是,当我尝试覆盖导入依赖项的同一个 pom 中的范围时,如下所示:
<dependency>
<groupId>org.picketlink</groupId>
<artifactId>picketlink-federation</artifactId>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
Maven 抱怨找不到版本,或者如果我使用 bom 中指定的版本属性,则找不到该属性。
我相当确定这是同一个 pom 中的 import + override 的问题,因为我可以很好地覆盖子项目中的范围。有没有办法在单个 pom 中导入和覆盖范围?
*上面的所有代码片段都来自同一部分。
这当然是可行的:
<dependencyManagement>
...
<dependency>
<groupId>org.jboss.bom.eap</groupId>
<artifactId>jboss-javaee-6.0-with-security</artifactId>
<version>${jboss.bom.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
...
</dependencyManagement>
<dependencies>
...
<dependency>
<groupId>org.picketlink</groupId>
<artifactId>picketlink-federation</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
请记住,您需要在 中<dependencies>而不是在<dependencyManagement>部分中重新定义范围。
如果您使用继承,您的范围覆盖当然会传播到任何子 POM。
| 归档时间: |
|
| 查看次数: |
1155 次 |
| 最近记录: |