为了账号安全,请及时绑定邮箱和手机立即绑定

Maven :没有主清单属性,在 target/xx.jar 中,无法执行 jar 文件

Maven :没有主清单属性,在 target/xx.jar 中,无法执行 jar 文件

慕哥6287543 2022-08-17 17:01:46
这是pom.xml:<?xml version="1.0" encoding="UTF-8"?><project        xmlns="http://maven.apache.org/POM/4.0.0"        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>dl4j</groupId>    <artifactId>dl4j</artifactId>    <version>1.0-SNAPSHOT</version>    <build>        <plugins>            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-compiler-plugin</artifactId>                <configuration>                    <source>1.8</source>                    <target>1.8</target>                </configuration>            </plugin>            <plugin>                <artifactId>maven-assembly-plugin</artifactId>                <configuration>                    <archive>                        <manifest>                            <mainClass>example.JavaTestExample</mainClass>                        </manifest>                    </archive>                    <descriptorRefs>                        <descriptorRef>jar-with-dependencies</descriptorRef>                    </descriptorRefs>                </configuration>            </plugin>        </plugins>    </build>    <dependencies>        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>4.11</version>            <scope>test</scope>        </dependency>我想运行并创建一个jar文件,其中包含所有依赖项。当我运行时,我得到以下错误:maven-assembly-pluginjava -jar jarfile.jarno main manifest attribute, in target/jarfile.jar我浏览了几个相同的Stack Overflow帖子,并尝试了所有排列和组合。我尝试添加两者和插件。你可以在上面的pom.xml中看到我的设置。我真的不确定这是怎么发生的,即使我添加了适当的maven设置。assemblyshade我验证了Java运行良好:我验证了是否正确指定了主类。除了结果,一切对我来说都很好,我现在很困惑。可能出了什么问题?我希望他们中的一些人仍然将问题标记为“重复”,但我一直在阅读其他帖子并尝试相应地更改设置。它们都不起作用。
查看完整描述

1 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

质量好的问题!


我认为这将有助于实现你的目标。


这就是我用来构建一个可点击的JavaFX Jar,其中包含所有依赖项。这是使用 和 而不是 ;这是关于差异的一个很好的资源。maven-jar-pluginmaven-shade-pluginmaven-assembly-plugin


<build>

    <plugins>

        <plugin>

            <groupId>org.apache.maven.plugins</groupId>

            <artifactId>maven-compiler-plugin</artifactId>

            <version>3.8.0</version>

            <configuration>

                <release>10</release>

            </configuration>

        </plugin>

        <plugin>

            <!-- I think you don't need this one -->

            <groupId>org.codehaus.mojo</groupId>

            <artifactId>exec-maven-plugin</artifactId>

            <version>1.6.0</version>

            <executions>

                <execution>

                    <goals>

                        <goal>java</goal>

                    </goals>

                </execution>

            </executions>

            <configuration>

                <mainClass>${mainClass}</mainClass>

            </configuration>

        </plugin>

        <plugin>

            <artifactId>maven-jar-plugin</artifactId>

            <configuration>

                <archive>

                    <manifest>

                        <mainClass>

                            ${mainClass}

                        </mainClass>

                    </manifest>

                </archive>

            </configuration>

        </plugin>

        <plugin>

            <groupId>org.apache.maven.plugins</groupId>

            <artifactId>maven-shade-plugin</artifactId>

            <version>3.2.0</version>

            <executions>

                <execution>

                    <phase>package</phase>

                    <goals>

                        <goal>shade</goal>

                    </goals>

                    <configuration>

                        <transformers>

                            <transformer

                                implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer" />

                            <transformer

                                implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">

                                <mainClass>${mainClass}</mainClass>

                            </transformer>

                        </transformers>

                    </configuration>

                </execution>

            </executions>

        </plugin>

    </plugins>

</build>


查看完整回答
反对 回复 2022-08-17
  • 1 回答
  • 0 关注
  • 176 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信