当前位置:  开发笔记 > 开发工具 > 正文

Maven构建不会过滤Intellij中的属性

如何解决《Maven构建不会过滤Intellij中的属性》经验,为你挑选了1个好方法。

我有一个问题,当我从Intellij 15.0.2运行Maven构建时,Maven Resources Plugin不会将我的属性过滤到我的文件中.当我mvn compile从Windows命令行运行时,它确实有效.我的插件配置是:


    aaa
    bbb

...

org.apache.maven.plugins
maven-resources-plugin
2.7

    
        
            src/main/resources
            
                file1
                file2
            
            true
        
    


    
        compile
        
            resources
        
    


Ashutosh Jin.. 9

修复

tldr:我能够重现你的问题然后通过从插件配置中直接移出元素来修复它:


    
        
            true
            ${basedir}/src/main/resources
            
                *
            
        
    
    
        
            org.apache.maven.plugins
            maven-resources-plugin
            2.7
            
                
                    compile
                    
                        resources
                    
                
            
        
        
    

未来的读者,如果你只对修复感兴趣,请不要再读了.对于勇敢的SO-er,血淋淋的细节等待下面!

我为什么这样做?

我做了以上操作,因为这是我在以前的项目中打开资源过滤的方式.我不需要更改默认阶段(process-resources),因此根本不需要显式指定maven-resources-plugin.但是,我很想知道为什么OP的配置不起作用,因此resources在maven-resources-plugin 文档中查看mojo 的示例,这些文档似乎直接指定了.

使用文档中的措辞似乎暗示仅在copy-resourcesmojo的插件配置下需要配置:

在此输入图像描述

更新

应该从maven-resources-plugin 入门开始,它明确指出:

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

此目标通常自动执行,因为它默认绑定到流程资源生命周期阶段.它始终使用project.build.resources元素指定资源,默认情况下使用project.build.outputDirectory指定复制目标.



Intellij的怪异?

我很想暗示Intellij没有错.

使用Intellij 15.0.2时,mvn clean compile从Intellij或命令行执行时,过滤行为(即它是否有效)是相同的.我会认为问题出在插件/ pom配置而不是Intellij本身,除非Intellij的maven集成中存在错误.对于它的价值,我在Intellij中使用maven时已经没有遇到过这个问题(现在从版本12.x开始使用它已经有一段时间了).

你的Intellij是否使用了与命令行使用的mvn不同的捆绑mvn?即从这里和命令行看到maven是否相同?这是我唯一能想到的,除了Intellij的maven整合中的一个错误(不太可能),它可能会解释你所看到的不同行为.

在此输入图像描述



1> Ashutosh Jin..:

修复

tldr:我能够重现你的问题然后通过从插件配置中直接移出元素来修复它:


    
        
            true
            ${basedir}/src/main/resources
            
                *
            
        
    
    
        
            org.apache.maven.plugins
            maven-resources-plugin
            2.7
            
                
                    compile
                    
                        resources
                    
                
            
        
        
    

未来的读者,如果你只对修复感兴趣,请不要再读了.对于勇敢的SO-er,血淋淋的细节等待下面!

我为什么这样做?

我做了以上操作,因为这是我在以前的项目中打开资源过滤的方式.我不需要更改默认阶段(process-resources),因此根本不需要显式指定maven-resources-plugin.但是,我很想知道为什么OP的配置不起作用,因此resources在maven-resources-plugin 文档中查看mojo 的示例,这些文档似乎直接指定了.

使用文档中的措辞似乎暗示仅在copy-resourcesmojo的插件配置下需要配置:

在此输入图像描述

更新

应该从maven-resources-plugin 入门开始,它明确指出:

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

此目标通常自动执行,因为它默认绑定到流程资源生命周期阶段.它始终使用project.build.resources元素指定资源,默认情况下使用project.build.outputDirectory指定复制目标.



Intellij的怪异?

我很想暗示Intellij没有错.

使用Intellij 15.0.2时,mvn clean compile从Intellij或命令行执行时,过滤行为(即它是否有效)是相同的.我会认为问题出在插件/ pom配置而不是Intellij本身,除非Intellij的maven集成中存在错误.对于它的价值,我在Intellij中使用maven时已经没有遇到过这个问题(现在从版本12.x开始使用它已经有一段时间了).

你的Intellij是否使用了与命令行使用的mvn不同的捆绑mvn?即从这里和命令行看到maven是否相同?这是我唯一能想到的,除了Intellij的maven整合中的一个错误(不太可能),它可能会解释你所看到的不同行为.

在此输入图像描述

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有