Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将Maven配置文件值注入属性文件_Java_Maven - Fatal编程技术网

Java 如何将Maven配置文件值注入属性文件

Java 如何将Maven配置文件值注入属性文件,java,maven,Java,Maven,有点困在这里。我有一个有3个配置文件的pom。这些配置文件有不同的版本名。我想在生成特定配置文件时将该版本名注入属性文件 我的个人资料: <profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activat

有点困在这里。我有一个有3个配置文件的pom。这些配置文件有不同的版本名。我想在生成特定配置文件时将该版本名注入属性文件

我的个人资料:

<profiles>
    <profile>
        <id>dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <projectVersion>DEV</projectVersion>
        </properties>
    </profile>

    <profile>
        <id>test</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <projectVersion>1.0.0-RC1</projectVersion>
        </properties>
    </profile>

    <profile>
        <id>prod</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <projectVersion>1.0.0-Final</projectVersion>
        </properties>
    </profile>
</profiles>
怎么做?Im通过命令创建项目:

mvn clean install -D profile_name

请注意所显示的配置文件。默认情况下,它们都处于活动状态,这是一个问题,因为它们都定义了相同的maven属性。相反,您应该在默认情况下仅将一个标记为活动

您也没有显示
筛选以处理
筛选.properties
,因此这也可能是一个错误


最后一点,您正在控制maven概要文件上的工件版本。我认为这不是个好主意。请阅读。

您需要做的是在POM文件的
部分中添加一个新部分

像这样:

<build>
    <resources>
        <resource>
            <filtering>true</filtering>
            <includes>
                <include>**/*.properties</include>
            </includes>
            <directory>src/main/resources</directory>
        </resource>
    </resources>
</build>
请注意这些变量的名称。Maven将用您定义的名称替换它,或者像${projectVersion}这样的Maven结构的名称将被pom文件的
1.0
标记替换

因此,与其使用:

<properties>
     <projectVersion>1.0.0-Final</projectVersion>
</properties>

注意-D不会激活任何配置文件,-P会这样做。另外,这三个配置文件在默认情况下是活动的,这是您想要的吗?啊,当然-P(我的错误!)。我的最终目标是构建一个简单的web应用程序,它有一个带有应用程序名称和应用程序版本的页面。此网页中的版本名取决于配置文件版本名。我的想法是将配置文件版本值设置为属性,并将属性设置为JSP页面。如果是您的选择之一。为了防止人们狩猎,在SB 1.3.0中对其进行了更改。下面是github.com/spring projects/spring boot/wiki/…–mdo123请检查,我无法使它在每个线程中工作。提前谢谢。
projectName = ${defaultName}
versionName = ${defaultVersion}
<properties>
     <projectVersion>1.0.0-Final</projectVersion>
</properties>
<properties>
     <defaultVersion>1.0.0-Final</defaultVersion>
     <defaultName>someName</defaultName>
</properties>
mvn install -Pprofilename