繁体   English   中英

Maven发行插件可以检查通过Maven依赖插件下载的工件中的SNAPSHOT版本吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM