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

Maven build没有过滤Intellij中的属性

严瑞
2023-03-14

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

<properties>
    <prop1>aaa</prop1>
    <prop2>bbb</prop2>
</properties>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<configuration>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>file1</include>
                <include>file2</include>
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>
</configuration>
<executions>
    <execution>
        <phase>compile</phase>
        <goals>
            <goal>resources</goal>
        </goals>
    </execution>
</executions>
</plugin>

共有3个答案

齐修贤
2023-03-14
匿名用户

尝试将${pom.basedir}添加到

从…起

<build>
    (...)
    <testResources>
        <testResource>
            <filtering>true</filtering>
            <directory>src/main/resources</directory>
    </testResource>
    (...)
</build>

<build>
    (...)
    <testResources>
        <testResource>
            <filtering>true</filtering>
            <directory>${pom.basedir}/src/test/resources</directory>
        </testResource>
    </testResources>
    (...)
</build>

我怀疑当Maven项目有多个模块时,Intellij需要找到正确的资源文件来执行pom.xml属性的替换。

宗政学
2023-03-14

这就是我的解决方案。

转到跑步

在服务器选项卡中

删除工件并添加这个maven目标:干净编译

邢晗日
2023-03-14

tldr:我能够重现您的问题,然后通过移出<代码>

xml prettyprint-override"><build>
    <resources>
        <resource>
            <filtering>true</filtering>
            <directory>${basedir}/src/main/resources</directory>
            <includes>
                <include>*</include>
            </includes>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.7</version>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <goals>
                        <goal>resources</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <!-- <snip> Other plugins -->
    </plugins>
</build>

未来的读者,如果你只对修复感兴趣,不要再读了。对于无畏的SO-ER,血淋淋的细节在下面等着!

我这样做是因为这是我在之前的项目中打开资源过滤的方式。我不需要更改默认阶段(Process-Resources),因此根本不需要显式指定maven-resources-plugin。但是,我很想知道为什么OP的配置不起作用,因此查看了maven-resources-plugin留档中资源mojo的示例,它似乎具有

用法文档中的措辞似乎暗示

应该从maven-resource-plugin介绍开始,其中明确指出:

资源:资源将主源代码的资源复制到主输出目录。

此目标通常自动执行,因为默认情况下它与流程资源生命周期阶段相关联。它总是使用项目。建筑resources元素指定资源,默认情况下使用项目。建筑outputDirectory指定复制目标。

我很想暗示Intellij没有错。

对于Intellij 15.0.2,当从Intellij或命令行执行mvn clean compile时,过滤行为(即它是否工作)是相同的。我原以为问题出在插件/pom配置中,而不是Intellij本身,除非Intellij的maven集成中存在缺陷。值得一提的是,在Intellij中使用maven时,我还没有遇到这个问题(从12.x版开始已经使用了一段时间)。

您的Intellij是否使用与命令行使用的mvn不同的捆绑mvn?i、 e.在这里和从命令行看到的maven是否相同?这是我能想到的唯一一件事,除了Intellij的maven集成中的一个bug(不太可能),它可能解释了您所看到的不同行为。

 类似资料:
  • 1. 2.ffmpeg是从http://johnvansickle.com/ffmpeg/ 3.我下载了,解压缩此文件,然后运行:然后安装了。我使用: 检查它没有问题。 我在我的系统中运行这些命令没有问题: 但是当我在java中调用这个命令时,会发生错误,为什么 错误: 结果1: 结果2:ffmpeg 3.1版。1-静态http://johnvansickle.com/ffmpeg/版权所有(c)

  • 问题内容: 我有一个查询,我需要过滤出结果。 这是我的查询 我说错了。我显然对过滤字段有一个查询。我遵循的是Elasticsearch页面上经过过滤的查询文档中给出的格式。 https://www.elastic.co/guide/zh-CN/elasticsearch/reference/current/query-dsl- filtered- query.html 问题答案: 该查询已在ES

  • 问题内容: 制作针对不同事件类型定义的转换与 StAX的 使用和感觉被迫进入一个程序实现- 提取这些事件并进行处理,过滤这些事件并处理它们,不是把所有的结果重新走到一起并返回。 SAX 似乎有一个非常好的功能,即基于XMLFilters的可链接筛选器。 我宁愿保留基于StAX的实现,但以某种方式合并或仿真SAX中的可链接筛选器。 可以通过合理的努力做到这一点吗?我已经错过了一个实现吗? 由于项目限

  • 我在IntelliJ Ultimate 2017.1.5中有一个基于gradle的groovy项目。我正在使用groovy 2.4.4。我的想法是用gradle 4.0.2运行gradle。 Gradle“webclient”项目刷新失败 错误:对于类:org,没有这样的属性:from。格拉德尔。应用程序编程接口。内部的任务。DefaultTaskOutputs$TaskOutputUnionFi

  • 问题内容: 如果我有一个带有对象作为属性值的复杂对象,如何按嵌套的属性之一进行过滤? 可以使用OOB ng-repeat过滤器完成此操作吗? 数据 ngRepeat 问题答案: 您需要传入参数以过滤: 柱塞示例

  • 问题内容: 我正在尝试根据的特定字段的值过滤Django中的表。 例如,我有两个模型: 我想根据相关项目的名称过滤我的资产列表。 目前,我正在执行两个查询: 我想知道是否有一种方法可以在主查询中指定这种过滤? 问题答案: