当前位置:  开发笔记 > 编程语言 > 正文

如何让Maven参战:爆炸而不是战争:战争

如何解决《如何让Maven参战:爆炸而不是战争:战争》经验,为你挑选了4个好方法。

我有一个使用的Maven pom war.但实际上,我不想构建war文件,我只想要收集所有依赖的jar并创建一个完整的部署目录.

所以我正在运行war:exploded生成部署目录的目标:


    org.apache.maven.plugins
    maven-war-plugin
    
        
            package
            
                target/${env}/deploy
                true
            
            
                exploded
            
        
    

问题是,战争文件仍然建立.是否有一种简单的方法来war执行war:exploded目标而不是战争:战争目标?

或者还有另一种简单的方法吗?



1> Michael Wyra..:

解决方案非常简单.您需要覆盖war插件的默认执行以禁用它并添加您自己的执行(用于爆炸):


    
            
                org.apache.maven.plugins
                maven-war-plugin
                
                    
                        default-war
                        none
                    
                    
                        war-exploded
                        package
                        
                            exploded
                        
                    
                
            
    


这是此处发布的最简单,最简单的解决方案.
你能解释一下这是如何工作的吗?您在哪里了解到禁用默认阶段目标绑定是使用id"default-war"完成的?

2> cetnar..:

根据包装阶段战争中war包装的内置生命周期绑定:war mojo被称为.

您可以调用之前的'prepare-package'阶段 - 所有操作都将执行,并在此之后调用mojo war:爆炸

mvn prepare-package war:exploded

结果将与您的相同,但不会产生战争.



3> David..:

我想升级到@Michael Wyraz的答案,只是包含安装跳过设置,以防有人mvn clean install在多模块项目的顶层执行构建,其中一个子模块是web应用程序.

这站在战争模块内:


    
        war_explode
        
            
                
                    
                        org.apache.maven.plugins
                        maven-war-plugin
                        2.6
                        
                            
                                default-war
                                none
                            
                            
                                war-exploded
                                package
                                
                                    exploded
                                
                            
                        
                    
                    
                        org.apache.maven.plugins
                        maven-install-plugin
                        
                            
                                default-install
                                none
                            
                        
                    
                
            
        
    

没有安装跳过构建失败,因为它尝试将war安装到.m2文件夹中.错误消息如下所示:

[INFO] --- maven-install-plugin:2.4:install (default-install) @ *** ---
[INFO]   ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.4:install (default-install) on project ***: The packaging for this project did not assign a file to the build artifact -> [Help 1]

执行mvn clean install -P war_explode此设置(包含在名为war_explode的 maven配置文件中),它完成构建而没有错误.



4> Rich Seller..:

我能想到做你想做的事的唯一方法是设置使用pom包装(或创建自定义包装)并将所需的目标从战争包装绑定到生命周期的相关阶段.如果你去pom打包你可以使用在一个配置文件中定义war:war执行来允许你打包它,但是你需要使用build-helper-maven-plugin attach-artifact目标来将战争附加到POM.

注意这种方法如果你想使用任何其他特定于战争的处理,它可能会导致你的问题.

战争包装的生命周期绑定在"构建生命周期简介"中列出(请参阅"默认生命周期绑定 - 打包ejb/ejb3/jar/par/rar/war"部分).

要将相关的插件执行绑定到pom包装,您可以执行以下操作:


  
    
      maven-resources-plugin
      
        
          process-resources
          process-resources
          
            resources
          
        
      
    
    
      maven-compile-plugin
      
        
          compile
          compile
          
            compile
          
        
      
    
    
      maven-resources-plugin
      
        
          process-test-resources
          process-test-resources
          
            testResources
          
        
      
    
    
      maven-surefire-plugin
      
        
          test
          test
          
            test
          
        
      
    
    
    

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