我注意到当您配置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中过滤。
这一切似乎都是“自动化的”。那么它如何工作以及我可以在哪里(如果有的话)配置它?
答案 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/
或
src/integrationtest
作为测试源(但如果integrationtest
不是众所周知的约定,则会违反maven的COC规则)或
integrationtest
至于过滤不同的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>