spring 访问Sping Boot Maven插件的pom.xml中的Maven settings.xml

oaxa6hgo  于 2023-02-07  发布在  Spring
关注(0)|答案(1)|浏览(114)

我想访问pom中settings.xml中包含的特定于用户的设置(密码、用户名等)。
我需要Spring Boot Maven Plugin的这些设置,因为我想在那里使用发布功能(将创建的Docker映像推送到我们的私有Docker存储库)。
有没有办法做到这一点?
当然,我不想在pom.xml中保存任何特定于用户的密码。
maven文档说明可以访问settings.xml(例如,此处:https://maven.apache.org/guides/getting-started/index.html#how-do-i-filter-resource-files),但它没有解释如何使用它。
我期待这样的东西在我的pom:

<someTag>${userSettings.some.property}</someTag>
g52tjvyc

g52tjvyc1#

假设spring-boot-maven-plugin具有以下配置

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <image>
            <name>docker.example.com/library/${project.artifactId}</name>
            <publish>true</publish>
        </image>
        <docker>
            <publishRegistry>
                <username>user</username>
                <password>secret</password>
                <url>https://docker.example.com/v1/</url>
                <email>user@example.com</email>
            </publishRegistry>
        </docker>
    </configuration>
</plugin>

并且不希望将我们的凭据存储在pom.xml中,因为它可供有权访问版本控制系统的每个人使用。Maven方法是使用我们的凭据在~/.m2/setting.xml中定义profile,并使用相应的占位符替换pom.xml中的凭据,例如:
~/. m2/设置.xml:

...
<profiles>
...    
    <profile>
        <id>registry-example.com</id>
        <properties>
            <registry.username>user</registry.username>
            <registry.password>secret</registry.password>
            <registry.url>https://docker.example.com/v1/</registry.url>
            <registry.email>user@example.com</registry.email>
        </properties>
    </profile>
...    
</profiles>
...

pom.xml:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <image>
            <name>docker.example.com/library/${project.artifactId}</name>
            <publish>true</publish>
        </image>
        <docker>
            <publishRegistry>
                <username>${registry.username}</username>
                <password>${registry.password}</password>
                <url>${registry.url}</url>
                <email>${registry.email}</email>
            </publishRegistry>
        </docker>
    </configuration>
</plugin>

现在,为了告诉maven考虑我们创建的profile,我们需要运行maven,其中-P标志指定profile的id:

mvn spring-boot:build-image -Pregistry-example.com

相关问题