maven-release-plugin可以检查通过maven-dependency-plugin下载的工件中的SNAPSHOT版本吗?

时间:2014-09-17 00:16:57

标签: maven maven-release-plugin maven-dependency-plugin

我们有一个项目A,它从另一个项目B下载工件,对其执行操作,并因此吐出新的工件。我们使用'依赖:copy'来自maven-dependency-plugin的目标是从我们的Maven存储库中获取这个Project B工件。

当我们执行Maven发布时,我希望maven-release-plugin&#39;发布:准备&#39;目标是检查所有依赖项,如果找到任何SNAPSHOT版本则失败。这适用于我们的<dependencies><dependency>...</dependency></dependencies>标记下的正常依赖项,但不适用于工件&#34;依赖项&#34;由maven-dependency-plugin复制。

如何(如果有的话)我可以将这些复制的工件的版本暴露给maven-release-plugin的准备测试,并确保我们从未构建包含项目B快照的项目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>

1 个答案:

答案 0 :(得分:0)

添加我自己的问题的答案,我发现我们可以通过在项目A的pom中加入一个额外的<dependency>...</dependency>元素(引用项目B)来将版本号公开给maven-release-plugin。如果我们尝试使用快照进行发布,这会导致失败,但它也会将项目B暴露给项目A的类路径。我们可以通过包含一个<scope>的“测试”来限制这一点(它将B的类保留在A的二进制文件中),但这仍然会使A的单元测试被B污染。

我希望有人在这里有一个更好的解决方案,它不会实际将项目B添加到项目A的类路径(的任何部分)。