jos*_*ain 11 java maven maven-bom
我正在使用BOM将其他项目中的依赖项导入到我的中,我需要一种方法来引用已在所述BOM中声明的依赖项版本.到目前为止,我已尝试将依赖项版本列为BOM中的属性,但此方法失败,因为属性未导入BOM.
我已经看到了Dependency Plugin的依赖:属性目标几乎完全符合我的需要,但是我没有给我一个完整的工件路径,而是需要将版本作为属性.有什么东西可以给我一个解决的工件的版本作为属性?
更新 - '为什么不使用父母pom?'
我经常发现自己在应用程序服务器环境中工作,其中提供的依赖项是使用BOM工件指定的(因为看起来这已成为分发相互关联的工件组的一种常见/标准方式,即widlfly).因此,我想将BOM视为事实的唯一来源.做类似的想法重新delcaring已经被在BOM中定义的依赖版本属性似乎不正确.
如果我要在父pom中定义镜像应用服务器环境的属性,我现在不得不担心保持父pom属性和BOM属性同步 - 为什么甚至在那时都有BOM?
这些信息已经在依赖树上提供了,这只是暴露它的问题......
jos*_*ain 11
找不到任何现有的maven或插件功能,所以我将旧的dependencypath-maven-plugin分叉并将其更改为使用版本.现在我可以插入这样的插件:
<build>
.
.
<plugins>
.
.
<plugin>
<groupId>io.reformanda.semper</groupId>
<artifactId>dependencyversion-maven-plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<id>set-all</id>
<goals>
<goal>set-version</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
并访问如下属性:
的groupId:artifactId的:类型[:分类] .version
IE
io.undertow:暗流核:jar.version = 1.3.15.Final
有关如何使用该插件的更多信息,请查看自述文件.它可以在Maven Central使用:
<dependency>
<groupId>io.reformanda.semper</groupId>
<artifactId>dependencyversion-maven-plugin</artifactId>
<version>1.0.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
...插件一直向下......
简短的回答 - 是的,可以。
详细来说,你的根 pom.xml:
<properties>
<slf4j.version>1.7.21</slf4j.version>
</properties>
...
<dependencyManagement>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
...
</dependencyManagement>
Run Code Online (Sandbox Code Playgroud)
在模块 pom.xml 中:
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
...
</dependencies>
Run Code Online (Sandbox Code Playgroud)
您还可以使用 ${slf4j.version} 值来过滤资源或在插件配置中。
更新
如果您无法使用父 POM 中的属性,您可以
归档时间: |
|
查看次数: |
7333 次 |
最近记录: |