我正在创建自己的 Maven 原型,这是我使用的项目的通用模板。
在该模板中,我有许多“exec-maven-plugin”块,实际上每个项目都有所不同,这意味着在一个项目中我可能有 2 个“exec-maven-plugin”块,而在另一个项目中我可能有 3 个或更多的。
我希望这是由用户驱动的,当他使用我创建的原型创建一个项目时。例如,用户将被要求提供一些主类,并且根据他选择输入的数量,应该创建许多“exec-maven-plugin”块。
例如,如果用户被要求提供他将拥有的主要课程,他可能会输入:com.domain.MyFirstMain、com.domainMySecondMain因此,maven pom.xml 应类似于以下内容:
<profiles>
<profile>
<id>Main1</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<executable>java</executable>
<arguments>
<argument>com.domain.MyFirstMain</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>Main2</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<executable>java</executable>
<arguments>
<argument>com.domain.MySecondMain</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
有谁知道当我创建 Maven 原型时我是否可以实现这一点,或者唯一的方法是让用户在 pom.xml 中添加所需的块?
谢谢。
应该可以做你想做的事。 Maven 使用阿帕奇速度将原型文件复制到新项目时处理它们。例如,我通过提示原型用户输入参数“useSomeFeature”并添加插件执行(如果响应以“Y”或“y”开头)成功地完成了类似的操作。
我的用例根据布尔回复添加了文本;您的用例需要一个 for 循环。它看起来像这样。请注意,这是未经测试的代码,我将其留给您来使语法完全正确,添加任何所需的错误处理并使其工作。 :) 无论如何,你有这个想法。
## archetype-resources/pom.xml
## assumes the template variable holding the main class list is mainClassAnswer
#set( $mainClasses = $mainClassAnswer.split(","))
.... basic POM elements here ....
<profiles>
#set ( $loopCount = 0 )
#foreach( $mainClass in $mainClasses )
#set ( $trimmedMainClass = $mainClass.trim() )
#set ( $loopCount = $loopCount + 1 )
<profile>
<id>Main${loopCount}</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<executable>java</executable>
<arguments>
<argument>${trimmedMainClass}</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>
</profile>
#end
</profiles>
.... rest of POM here ....
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)