java - 没有主要 list 属性,在 jar 中

标签 java maven jar manifest maven-shade-plugin

我正在尝试运行由 maven shade 插件创建的 jar。我正在按以下方式配置主类:

<project>
...
<build>
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>2.3</version>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>shade</goal>
        </goals>
        <configuration>
          <transformers>
            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
              <manifestEntries>
                <Main-Class>org.comany.MainClass</Main-Class>
                <Build-Number>123</Build-Number>
              </manifestEntries>
            </transformer>
          </transformers>
        </configuration>
      </execution>
    </executions>
  </plugin>
</plugins>

...

但是当我尝试使用 java -jar app.jar 运行 jar 时,出现以下错误

 "no main manifest attribute, in  app.jar"

编辑: 我使用 jar tf app.jar 检查了 jar 的内容,我看到了一个 MANIFEST.MF 文件。但是它没有主类的条目。我如何确保 jar 中的 list 文件将此条目分开以便将其添加到阴影插件配置中?

最佳答案

Maven的shade插件使用jar插件生成的JAR,并添加依赖。由于 shade 插件上的转换似乎无法正常工作,您只需要像这样设置 jar-plugin 的配置:

<build>
  ...
  <plugins>
    ...     
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      <version>3.0.2</version>
      <configuration>
        <archive>
          <manifest>
            <addClasspath>true</addClasspath>
            <mainClass>com.mypackage.MyClass</mainClass>
          </manifest>
        </archive>
      </configuration>
    </plugin>
  </plugins>
  <plugin>
    [Your shade plugin definition without the transformers here]
  </plugin> 
</build>

关于java - 没有主要 list 属性,在 jar 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30757739/

相关文章:

maven - Maven将JAR文件放入包中,运行mvn依赖项时不会显示该文件:list/tree -Dverbose = true

java - 在子目录中创建 jar 文件时出现 NoClassDefFoundError

java - 如果 Runnable 发生变化,它们是否共享数据结构?

java - 如何从 SOAP Web 服务获取图像

maven - -Dmaven.test.skip=null 有什么作用?

java - 使用 maven,如何将 war 配置到 ear 文件中

java - 无法将 ImageJ 集成到 Android 应用程序中

java - 如何从 Java 程序内存中清除字符串?

java - 在java Android中检查字符串是否只包含数字和空格

java - mvn install 不在本地存储库中创建 jar 文件