簡體   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