Maven配置文件 - 根据包装激活配置文件

13 maven-2 profiles

我有一个POM,它声明了我的项目常见的Web应用程序.我使用它作为所有Web应用程序的父级.

只有在包装出现战争时才能激活配置文件吗?我尝试了属性方法,但这不起作用(因为它不是系统/环境属性).

由于这无法构建,我可以在安装POM时简单地禁用该配置文件,但我希望它本身更智能.

沃尔特

shy*_*ynx 12

你可以简单地检查src/main/webapp的存在.使用Maven标准目录布局的每个Web应用程序都应包含此文件夹.所以你避免不必要的虚拟文件.

<profile>
    <id>custom-profile-eclipse-project-generation-webapp</id>
    <activation>
        <file>
            <exists>${basedir}/src/main/webapp</exists>
        </file>
    </activation>
    <build>
    </build>
</profile>
Run Code Online (Sandbox Code Playgroud)

更精确的是,您还可以检查$ {basedir} /src/main/webapp/WEB-INF/web.xml是否存在.这应该明确地确定一个战争项目.

对于我自己,我在我的常用超级pom中使用此配置来为不同的项目类型配置maven-eclipse-plugin.这非常方便在我们组织中的同一项目类型上获得同质的eclipse配置,特别是当开发人员直接运行eclipse:eclipse on multi-module-projects时.


luc*_*001 5

我知道这不是直接回答你的问题,但像这样的问题的通常解决方法是只使用专门化(与类一样).

因此,您拥有所有常见行为的MasterPom.

扩展MasterPom的MasterWarPom(它是它的父级),并在此处放置任何"打包是战争"的专业化.

同样你可以拥有MasterJarPom等......

这样就可以很好地区分差异.


Sea*_*oyd 2

没有干净的方法可以做到这一点,父模块无法知道子模块的包装。(非干净的解决方案将涉及创建一个解析子模块的 pom 等的插件。)