我正在将Maven用于我们的一个项目。我们有一个编译时插件jasperreports-plugin
,它是使用jasperreports
6.1.1
构建的。但是,我们有另一个使用jasper-including-artifact
jasperreports
的依赖项(我们控制)6.1.0
。这需要我们在jasperreports
的部分中手动覆盖jasperreports-plugin
的版本,以便它们匹配。 POM最终看起来像是什么:
<dependencies>
<dependency>
<groupId>com.my.application</groupId>
<artifactId>jasper-including-artifact</artifactId>
<version>4.1.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.alexnederlof</groupId>
<artifactId>jasperreports-plugin</artifactId>
<version>2.2</version>
<dependencies>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.1.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
这是有效的,但为了使其更易于维护,我们理想地希望能够从jasper-including-artifact
依赖项读取值并使用它来设置{{1}中覆盖依赖项的版本},所以当jasperreports-plugin
中的jasperreports
版本发生变化时,我们不需要对POM进行手动修改。所以这样的事情(显然是假的):
jasper-including-artifact
请注意,它不是我们感兴趣的<dependencies>
<dependency>
<groupId>com.my.application</groupId>
<artifactId>jasper-including-artifact</artifactId>
<version>4.1.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.alexnederlof</groupId>
<artifactId>jasperreports-plugin</artifactId>
<version>2.2</version>
<dependencies>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>${jasper-including-artifact.jasper-version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
版本,而是其中包含的jasper-including-artifact
版本。我们控制jasperreports
,以便我们可以根据需要对POM进行更改。
这是Maven提供的功能吗?