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

可以将多模块maven原型设置为具有可选模块吗?

如何解决《可以将多模块maven原型设置为具有可选模块吗?》经验,为你挑选了1个好方法。

我将创建一个多模块原型.它将生成几个模块.原型的一些用户可能需要所有这些用户,而有些用户只需要其中的一些用户.

我的原型可以从命令行获取参数并决定生成哪些模块吗?我检查了https://maven.apache.org/archetype/archetype-models/archetype-descriptor/archetype-descriptor.html ,它似乎不支持.



1> A_Di-Matteo..:

在这种特定情况下,原型可以始终创建所有必需的模块,并将不同的风格(模块集)移动到配置文件中.默认情况下,只有一个配置文件在archetype:generate步骤中指定.

因此,如果我想拥有flavorA的模块,我将运行原型为

mvn archetype:generate -DarchetypeGroupId=.. -DflavorA=true

原型将把这个变量传递给activeByDefaultflavorA配置文件的元素,重新定义flavorA用户modules所需的模块集的元素.

对于flavorBflavorB(例如)也可以这样做,每个都定义了一组不同的模块.

作为原型的一部分的这种聚合器/父POM的示例将是:


    
        flavourA
        
            ${flavourA}
        
        
            profiled-module2
            profiled-module3
        
    
    
        flavourB
        
            ${flavourB}
        
        
            profiled-module3
        
    
    
        flavourC
        
            ${flavourC}
        
        
            profiles-module1
            profiled-module2
            profiled-module3
        
    

archetype-metadata.xml然后该文件可以指定:


    
        false
    
    
        false
    
    
        false
    

然后使用该-DflavorB=true选项调用的原型将生成如下的pom:


    
        flavourA
        
            false
        
        
            profiled-module2
            profiled-module3
        
    
    
        flavourB
        
            true
        
        
            profiled-module3
        
    
    
        flavourC
        
            false
        
        
            profiles-module1
            profiled-module2
            profiled-module3
        
    

这种方法具有以下优点和缺点:

好处

您将常用模块和原型维护保存在一个集中的位置,同时将选择的风味保留给原型的用户

如果需要并且零成本,原型的用户可以从一种味道切换到另一种味道,只需激活/停用配置文件

该方法使用标准Maven功能

缺点

每个原型都将生成整个模块集,即使并非所有模块都是必需的

如果真的是"噪音",用户可以手动删除不需要的模块,但仍然是手动操作


此外,除了上述方法之外,我们还可以在每个配置文件中配置Maven Clean Plugin以删除与其风格无关的模块,以便在其第一次构建(a maven clean)时,将删除任何不需要的模块.这样的方法会使POM的轮廓不一致,但也可以考虑(不推荐).

就像是:


    flavourA
    
        ${flavorA}
    
    
        profiled-module2
        profiled-module3
    

    
        
            
                org.apache.maven.plugins
                maven-clean-plugin
                3.0.0
                
                    
                        
                            ${basedir}/profiled-module1
                        
                    
                
            
        
    

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