IntelliJ的Maven过滤支持如何工作?

时间:2012-04-05 21:38:29

标签: maven intellij-idea

我注意到当您配置Maven项目以使用属性过滤时,属性过滤似乎也可以在非maven IntelliJ“make”期间工作。这意味着Jetty / Tomcat / GWT / Glassfish的IntelliJ运行配置仍将遵循您的maven资源过滤。

所以,如果我将其添加到我的pom.xml

 <build>
     <resources>
         <resource>
             <directory>src/main/resources</directory>
             <filtering>true</filtering>
             <includes>
                 <include>**/*.properties</include>
                 <include>**/persistence.xml</include>
             </includes>
         </resource> ....

在任何intellij运行配置启动之前,它应该过滤我的属性和peristence.xml文件中的任何属性。这对于交换JDBC引用或文件系统参数非常有用。

我遇到的唯一问题是,即使我将pom.xml更改为其他目录的第二个条目(即:src / integrationtest / resources),IntelliJ似乎也只是在src / main / resources中过滤。

这一切似乎都是“自动化的”。那么它如何工作以及我可以在哪里(如果有的话)配置它?

4 个答案:

答案 0 :(得分:2)

  

IntelliJ IDEA的Make功能可以过滤Maven资源。但是,IntelliJ IDEA还不支持过滤Web资源。

来源:http://www.jetbrains.com/idea/webhelp/maven.html#compile
虽然没有关于整个intellij webhelp中这种支持的进一步细节,所以我猜它应该像maven的进程资源阶段一样工作。

您遇到的问题可能是因为目录src/integrationtest/resources不遵循maven约定。 也许如果你能这样做:

  • 制作src/test/resources/integrationtest/

  • 将maven配置为尊重src/integrationtest作为测试源(但如果integrationtest不是众所周知的约定,则会违反maven的COC规则)

  • 如果你想强调隔离integrationtest
  • ,请将其设为另一个maven(sub)模块

至于过滤不同的src/main/resources:过滤src/main/webapp/META-INF的目录,为我开箱即用。
(Maven 3.0.4,Intellij 12.1.4)

答案 1 :(得分:2)

好消息,看起来这个问题将在13.1中修复

http://youtrack.jetbrains.com/issue/IDEA-25934

编辑:对不起,如果不够清楚,错误案例只是标记为“已修复”,没有进一步说明...... 但是我在13.1 EAP版本(build 134.1445)中进行了测试,而之前的IntelliJ会覆盖资源,现在它保留了Maven过滤的Web资源。

答案 2 :(得分:0)

Intellij(我正在使用14.1)允许您在工件构建期间将自定义Ant任务定义为预处理/后处理。

转到项目结构 - &gt;文物 - &gt; {select artifact} - &gt; {预处理|后处理}标签。

因此,例如,我可以使用以下简单任务来模拟资源过滤,如果它不能开箱即用:

<target name="filter" depends="clean">
    <copy todir="${maven.build.dir}/${maven.build.finalName}">
        <fileset dir="${maven.build.resourceDir.0}"/>
        <filterset begintoken="${" endtoken="}">
            <filter token="project.version" value="${project.version}"/>
        </filterset>
    </copy>
</target>

答案 3 :(得分:-1)

不要忘记定义默认配置文件

 <profiles>
    <profile>
        <id>development</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            ...
        </properties>
    </profile>
 </profiles>