我想知道是否有任何方法可以指定我希望我的 Maven 用作参考的主类,例如
mvn package -DmainClass=com.myMainClass
Run Code Online (Sandbox Code Playgroud)
不想修改 pom 或插件本身,只需将其作为参数发送,知道吗?
jarmaven-jar-plugin目标定义了一个archive参数,其
org.apache.maven.archiver.MavenArchiveConfiguration类型定义了该
mainClass参数。
但该archive参数没有User property关联的允许在命令行执行中提供值作为参数的参数。
请注意,maven-assembly-plugin允许将工件打包为 JAR 也不会更有帮助:该archive参数没有定义为 a User property。
所以你没有选择(至少对于maven-jar-plugin):你必须使用mainClasspom.xml 中的属性。
现在,如果有意义的话,您可以mainClass使用从命令行传递的自定义用户属性使该值动态化:pom.xml 中的值。
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<archive>
<manifest>
<mainClass>${my.mainClass}</mainClass>
</manifest>
</archive>
</configuration>
...
</plugin>
</plugins>
</build>
...
</project>
Run Code Online (Sandbox Code Playgroud)
并执行:
mvn package -Dmy.mainClass=com.myMainClass
Run Code Online (Sandbox Code Playgroud)