[英]Can maven-release-plugin check for SNAPSHOT versions in artifacts downloaded via maven-dependency-plugin?
我们有一个项目A,该项目从另一个项目B下载工件,对其进行操作,然后吐出一个新工件。 我们使用来自maven-dependency-plugin的'dependency:copy'目标来从我们的Maven存储库中获得Project B工件。
当我们执行Maven发布时,我希望maven-release-plugin的'release:prepare'目标能够检查所有依赖项,并且如果找到任何SNAPSHOT版本都会失败。 这适用于<dependencies><dependency>...</dependency></dependencies>
标记下的常规依赖项,但不适用于maven-dependency-plugin复制的工件“ dependencies”。
如何(如果有的话)如何将这些复制的工件的版本暴露给maven-release-plugin的prepare测试,并确保我们绝不会构建包含Project B快照的Project A版本?
如果上下文有帮助,这是我们pom中的maven-dependency-plugin设置的简化版本:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy</id>
<phase>process-sources</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${ProjectBGroupID}</groupId>
<artifactId>${ProjectB}</artifactId>
<version>${ProjectBVersion}</version>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
在回答我自己的问题时,我发现我们可以通过在项目A的pom中包含一个额外的<dependency>...</dependency>
元素(指项目B)来将版本号公开给maven-release-plugin。 。 如果我们尝试使用快照发布,这会适当地导致失败,但同时也会使Project B暴露给Project A的类路径。 我们可以通过包含“ test”的<scope>
(这使B的类不属于A的二进制数)来对此加以限制,但这仍然使A的单元测试受到B的“污染”。
我希望这里的人有一个更好的解决方案,它实际上不会将项目B添加到项目A的(任何部分)类路径中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.