10

我注意到,当您将 Maven 项目配置为使用属性过滤时,属性过滤似乎在非 Maven IntelliJ“制作”期间也有效。这意味着 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 运行配置开始之前过滤我的 properties 和 peristence.xml 文件中的任何属性。这对于交换 JDBC 引用或文件系统参数非常有用。

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

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

4

4 回答 4

2

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

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

编辑:抱歉,如果不够清楚,错误案例只是标记为“已修复”,没有进一步解释......但我在 13.1 EAP 版本(内部版本 134.1445)中进行了测试,虽然以前 IntelliJ 会覆盖资源,但它现在保留了网络Maven过滤的资源。

于 2014-03-06T19:32:27.650 回答
2

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

来源:http
: //www.jetbrains.com/idea/webhelp/maven.html#compile 虽然在整个 intellij webhelp 中没有关于这种支持的更多细节,所以我想它应该像 maven 的 process-resources 阶段一样工作。

您遇到的问题可能是由于目录src/integrationtest/resources不遵循 maven 约定引起的。如果您这样做,也许它会起作用:

  • 做了src/test/resources/integrationtest/

或者

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

或者

  • 如果您想强调隔离,请使其成为另一个 Maven(子)模块integrationtest

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

于 2013-07-14T08:10:27.507 回答
0

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

转到项目结构 -> 工件 -> {选择工件} -> {预处理|后处理}选项卡。

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

<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>
于 2015-05-04T15:41:35.810 回答
-2

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

 <profiles>
    <profile>
        <id>development</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            ...
        </properties>
    </profile>
 </profiles>
于 2014-10-10T16:03:44.400 回答