当前位置: 首页 > 知识库问答 >
问题:

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

公羊俊
2023-03-14

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

所以如果我把这个添加到我的pom中。xml:

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

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

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

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

共有3个答案

龙安阳
2023-03-14

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>
邵子平
2023-03-14

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

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

幸鸿轩
2023-03-14

IntelliJ IDEA的Make特性能够过滤Maven资源。然而,IntelliJ IDEA还不支持过滤web资源。

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

您遇到的问题可能是由于目录src/集成测试/资源不遵循maven约定。如果您:

  • 使其src/test/资源/集成测试/

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

  • 让它成为另一个maven(子)模块,如果你想强调集成测试
  • 的隔离

至于筛选不同的目录,请参见:筛选对我来说是现成的
(Maven 3.0.4,Intellij 12.1.4)

 类似资料:
  • 我试图理解过滤器链接。正如这个问题所定义的 所有过滤器都被链接(按照它们在web.xml中定义的顺序)。chain.doFilter()正在进行到链中的下一个元素。链的最后一个元素是目标资源/servlet。 我很想知道容器中的场景背后,容器是如何处理过滤器链接的。有人能解释一下过滤器链接是如何在容器内处理的吗?

  • 我正在通过gradle-intellij-plugin使用IntelliJ SDK编写一个插件。 我还将智能J插件的罐子添加到SDK类路径中 任何想法的原因?如何为这些专家/格拉德的东西引入支持?

  • 我试图将CORS过滤器添加到SpringWeb应用程序中,但该过滤器未被执行。我在这里遵循了相关步骤:https://spring.io/guides/gs/rest-service-cors/无济于事。我没有用Spring靴。我正在3.0 servlet规范容器中使用Spring的WebApplicationInitializer引导我的应用程序。 我的应用程序中的其他一切都在工作:配置类、控制

  • 我在多模块maven项目中遇到以下问题: 该项目最初是在Eclipse中创建的,可以在那里编译和运行。它也可以用构建。 现在,当我使用以下导入选项将项目导入Intellij时,将识别父pom.xml,并导入项目及其模块。 一切看起来都很好,但是当我试图编译它时,一个类,它有一个来自另一个模块的类作为依赖项,找不到。 我尝试了很多解决方案,唯一对我有效的是过时的maven idea插件。现在,每当任

  • 我遇到了一个问题,当我从Intellij 15.0.2运行Maven build时,Maven资源插件没有将我的属性过滤到我的文件中。当我从Windows命令行运行mvn compile时,它确实可以工作。我的插件配置为:

  • 我有提供gRPC服务的Google Run容器。我想在Firebase上使用Web gRPC构建一个前端。我正在探索使用Google API Gateway作为Web gRPC和正确的gRPC之间的代理。 我正在看这个指南:https://cloud.google.com/api-gateway/docs/get-started-cloud-run-grpc其中没有提到Web,但我知道网关是基于经