首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven:无论项目是否正在发布,都需要一种方法来更改属性或URL值

Maven:无论项目是否正在发布,都需要一种方法来更改属性或URL值
EN

Stack Overflow用户
提问于 2019-05-30 00:30:15
回答 1查看 51关注 0票数 0

我们使用debian插件来构建我们的one-jar项目的JDeb包。

我们有两个APT存储库,一个用于预发布构建,另一个用于发布。

我们正在使用旅行车插件来上传工件,但我们不知道如何只将发布发送到发布存储库,并将快照发送到预发布存储库。

代码语言:javascript
复制
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>wagon-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>upload-to-nexus</id>
            <phase>deploy</phase>
            <goals>
                <goal>upload-single</goal>
            </goals>
            <configuration>
                <serverId>xxx-all</serverId>
                <fromFile>${project.build.directory}/${jdeb.name}</fromFile>
                <url>https://xxx.xxx.xxx/repository/xxx-apt-pre</url>
            </configuration>
        </execution>
    </executions>
</plugin>

当发布插件运行时,我们需要将上面的xxx-apt-pre更改为xxx-apt-dist。对于我的生活,我想不出一个方法来做这件事。

我最初尝试使用build-helper插件对短语SNAPSHOT${project.build.finalName}进行正则表达式,但它不会覆盖现有属性。

欢迎任何想法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-30 12:55:34

这个解决方案不是很好,但就像我们在中西部所说的那样:

代码语言:javascript
复制
<plugin>
    <groupId>org.codehaus.gmaven</groupId>
    <artifactId>gmaven-plugin</artifactId>
    <executions>
        <execution>
            <id>add-dynamic-properties</id>
            <phase>package</phase>
            <goals>
                <goal>execute</goal>
            </goals>
            <configuration>
                <source>
                <![CDATA[
                    if (project.version.contains('SNAPSHOT')) {
                        project.properties['aptRepoName'] = 'xxx-apt-pre'
                    } else {
                        project.properties['aptRepoName'] = 'xxx-apt-dist'
                    }
                ]]>
                </source>
            </configuration>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>wagon-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>upload-to-nexus</id>
            <phase>deploy</phase>
            <goals>
                <goal>upload-single</goal>
            </goals>
            <configuration>
                <serverId>xxx-all</serverId>
                <fromFile>${project.build.directory}/${jdeb.name}</fromFile>
                <url>https://xxx.xxx.xxx/repository/${aptRepoName}</url>
            </configuration>
        </execution>
    </executions>
</plugin>

我希望这能帮助一些人,或者有一天有人发布更好的方式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56364966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档