maven变量属性过滤

时间:2011-12-05 14:26:24

标签: maven maven-profiles

我正在尝试使用一些变量属性值并使用Maven配置文件来获取正确的输出。我已经为我的hibernate xml,log4j.properties做了这个,并没有问题。

所以它在项目#1中对我有用,我在/ src / main / resources下有一堆文件。我在maven中设置了属性和资源过滤,如下所示:

<properties>
    <log.level>DEBUG</log.level>
</properties>


<profiles>
    <profile>
        <id>production</id>
        <properties>
    <log.level>INFO</log.level>
        </properties>
    </profile>
</profiles>

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

以上工作没有问题。 但是,在我的项目#2中 - 我有一些具有可变属性的文件,但是它们位于/ src / main / webapp / WEB-INF下 - 我做的与上面相同,除了指向WEB-INF的目录它不起作用。我在项目#2上尝试将文件放在/ src / main / resources下并且工作正常。

在我看来资源过滤有问题,当文件在/ src / main / webapp / WEB-INF下但是我需要文件在那里,所以它在生成战争时进入WEB-INF文件夹。 / p>

有没有人有指针说明如何做到这一点?

以下是pom.xml中的以下snipet不起作用(资源过滤完全被忽略)

<properties>
        <wsdl.url>http://stage/wsdl-url</wsdl.url>
</properties>

<profiles>
    <profile>
        <id>production</id>
        <properties>
    <wsdl.url>http://prod/wsdl-url</wsdl.url>
        </properties>
    </profile>
</profiles>

<build>
    <resources>
        <resource>
            <directory>src/main/webapp/WEB-INF</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

1 个答案:

答案 0 :(得分:5)

我也有这个问题;我怀疑战争插件忽略了POM的主<resources>部分,因此我想出了直接配置插件:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <filters>
            <filter>filter.properties</filter>
        </filters>
        <webResources>
            <resource>
                <directory>WebContent/WEB-INF</directory>
                <filtering>true</filtering>
                <targetPath>WEB-INF</targetPath>
            </resource>
        </webResources>
    </configuration>
</plugin>