【问题标题】:How can I specify the mainClass in the manifest with minijar-maven-plugin?如何使用 minijar-maven-plugin 在清单中指定 mainClass?
【发布时间】:2011-03-23 19:07:33
【问题描述】:

我正在使用 minijar-maven-plugin 来减小我的 jar-with-dependencies jar 的大小,但我需要指定一个 mainClass,就像我可以使用 maven 程序集插件轻松完成一样。如何在仍然使用 minijar 插件的同时在清单中指定 mainClass?

我的minijar配置是默认的:

    <plugin>
        <artifactId>minijar-maven-plugin</artifactId>
        <groupId>org.codehaus.mojo</groupId>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>ueberjar</goal>
                </goals>
                <configuration>
                    <includeArtifact>true</includeArtifact>
                    <stripUnusedClasses>false</stripUnusedClasses>
                    <includeDependencies>
                        <param>org.vafer:dependency</param>
                    </includeDependencies>
                    <includeDependenciesInRelocation>
                        <param>org.vafer:dependency</param>
                    </includeDependenciesInRelocation>
                </configuration>
            </execution>
        </executions>
    </plugin>

我可以使用以下方法在 maven 程序集插件中指定主类:

    <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
            <archive>
                <manifest>
                    <mainClass>com.chheng.Main</mainClass>
                </manifest>
            </archive>
            <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
        </configuration>
    </plugin>

【问题讨论】:

    标签: java maven-2 jar manifest


    【解决方案1】:

    你应该试试 maven shade 插件。它更好地处理元数据并处理依赖内联。

    我已经弃用了 minijar 插件,而是 added support 对 maven shade 插件进行了同样的优化。

    观看/投票this issue 以获取应用。

    【讨论】:

      【解决方案2】:

      这已被请求 - 请参阅此 executable uberjar 线程和 MOJO-852 - 但仍不受支持。鉴于这个问题已经开放 3 年多了,我不希望快速解决(除非你提交补丁)。


      我不太了解 minijar 插件,实际上我从未使用过它...但是如果您将 jar 插件配置为生成带有主 jar 的主类条目的清单会发生什么?

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <!--addClasspath>true</addClasspath-->
              <mainClass>my.main.Class</mainClass>
              </manifest>
          </archive>
        </configuration>
      </plugin>
      

      【讨论】:

      猜你喜欢
      • 2019-08-08
      • 1970-01-01
      • 2017-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多