How to dynamically inject properties into settings.xml in maven

I am trying to fully automate a build and, most importantly, a release using maven in travis-ci. The way I am attempting to do it it to supply the username and password commandline as properties and have them substituted in the settings.xml file. Then, when running the build, I override the location of settings.xml to be a file I checked in. Everything needed to build and release needs to be checked into the repo. It doesn't look like maven is doing the property substitution though.

Example:

settings.xml

<?xml version='1.0' encoding='UTF-8'?>
<settings xsi:schemaLocation='http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd'
          xmlns='http://maven.apache.org/SETTINGS/1.0.0' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
    <servers>
        <server>
            <id>sonatype-nexus-snapshots</id>
            <username>${SONATYPE_USERNAME}</username>
            <password>${SONATYPE_PASSWORD}</password>
        </server>
        <server>
            <id>sonatype-nexus-staging</id>
            <username>${SONATYPE_USERNAME}</username>
            <password>${SONATYPE_PASSWORD}</password>
        </server>
    </servers>
</settings>

build command:

mvn --settings $PWD/settings.xml -e -X -B release:prepare release:perform "-DSONATYPE_USERNAME=YYIaF/A4" "-DSONATYPE_PASSWORD=kowLPBgK+/kRiC+O96YZT1ibvxrdcKc" -Dgpg.passphrase=passphrase

These are not the actual credentials but I included the fact they have some funky characters incase that matters.

error:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy (default-deploy) on project foo-parent: Failed to deploy artifacts: Could not transfer artifact com.baz:foo-parent:pom:3.0.3 from/to sonatype-nexus-staging (https://oss.sonatype.org/service/local/staging/deploy/maven2/): Failed to transfer file: https://oss.sonatype.org/service/local/staging/deploy/maven2/com/baz/foo-parent/3.0.3/foo-3.0.3.pom. Return code is: 401, ReasonPhrase: Unauthorized. -> [Help 1]

but if I do this the official way (.m2/settings.xml) - all is good.

Since the objective is to fully automate a release from travis-ci, if there is just a direct way to do that, I am all ears.

链接地址: http://www.djcxy.com/p/62954.html

上一篇: 从docker传递端口号

下一篇: 如何动态地将属性注入到maven的settings.xml中