用maven打包时如何指定主类?

jpg*_*z18 0 java maven

我想知道是否有任何方法可以指定我希望我的 Maven 用作参考的主类,例如

mvn package -DmainClass=com.myMainClass
Run Code Online (Sandbox Code Playgroud)

不想修改 pom 或插件本身,只需将其作为参数发送,知道吗?

dav*_*xxx 5

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)