没有主要的清单属性,在jar中

我正在尝试运行由maven遮罩插件创建的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中的清单文件具有除阴影插件配置中添加它的条目?


Maven的阴影插件使用jar插件生成的JAR并添加依赖关系。 由于看起来阴影插件上的变换无法正常工作,因此您只需设置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>

不要忘记添加阴影作为目标:

mvn clean package shade:shade

链接地址: http://www.djcxy.com/p/55019.html

上一篇: no main manifest attribute, in jar

下一篇: class manifest attribute from a JAR file?