Maven Profile变量Web项目无法正常工作

时间:2014-07-23 16:35:37

标签: maven variables inheritance classification profile

我有一个包含3个模块的模块化maven项目。在其中一个(WEB)中,概要文件变量未被识别为环境变量,但它采用了它的真实名称,如下所示:

<Principal POM> 
    <Module App-core>
    <Module ejb>    
    <Module web>

在主要POM中,有3个配置文件具有相同的配置文件属性,具有不同的值:

<profile1>
    <environment>value1</environment>

<profile2>
    <environment>value2</environment>

<profile3>
    <environment>value3</environment>

该变量用作依赖关系的分类器变量,如下所示:

<dependency>
    <groupId>com.test</groupId>
    <artifactId>app-core</artifactId>
    <version>1.0.0</version>
    <classifier>${environment}</classifier>
</dependency>

在maven编译阶段,仅在Web Project中,它不会使用变量值更改变量名称。

任何帮助?

2 个答案:

答案 0 :(得分:0)

标记profile1 profile2 profile3不启用替换属性。为此,您可以通过这种方式更改父pom

    <project>
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

    <profiles>
        <profile>
            <id>profile1</id>
                <properties>
                    <environment>value1</environment>   
                </properties>
        </profile>

        <profile>
            <id>profile2</id>
                <properties>
                    <environment>value2</environment>   
                </properties>
        </profile>

        <profile>
            <id>profile3</id>
                <properties>
                    <environment>value2</environment>   
                </properties>
        </profile>
    </profiles>
</project>

现在你必须运行 mvn install -P profile1 yourProjectName

答案 1 :(得分:0)

我已经解决了这个问题。

我已将依赖项复制到配置文件中。我有多个依赖项

这是profile1的代码

<profile>
    <id>profile1</id>
<properties>
<environment>value1</environment>
</properties>
    <dependency>
        <groupId>com.test</groupId>
        <artifactId>app-core</artifactId>
        <version>1.0.0</version>
        <classifier>${environment}</classifier>
    </dependency>
</profile>

这是profiles2的代码

<profile>
    <id>profile2</id>
<properties>
<environment>value2</environment>
</properties>
    <dependency>
        <groupId>com.test</groupId>
        <artifactId>app-core</artifactId>
        <version>1.0.0</version>
        <classifier>${environment}</classifier>
    </dependency>
</profile>

这个代码是profile3

<profile>
    <id>profile3</id>
<properties>
<environment>value3</environment>
</properties>
    <dependency>
        <groupId>com.test</groupId>
        <artifactId>app-core</artifactId>
        <version>1.0.0</version>
        <classifier>${environment}</classifier>
    </dependency>
</profile>