java - Maven 不会创建可运行的 jar

标签 java maven jsoup manifest program-entry-point

我的 pom.xml 看起来像这样

...
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <archive>
            <manifest>
              <mainClass>application.Main</mainClass>
            </manifest>
          </archive>
        </configuration>
      </plugin>
    </plugins>
  ...

但是虽然我指定了主类,但在 clean package install 上,maven 仅创建不可运行的 jar。

我该如何解决这个问题? list 如下所示:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: Matthias
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_121

最佳答案

您应该配置maven jar插件来创建可执行jar,而不是maven编译器插件:

<plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>              
      <archive>
        <manifest>          
            <mainClass>application.Main</mainClass>
        </manifest>
      </archive>
    </configuration>
</plugin>

要声明源/目标 java 版本,您可以使用:

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

而不是声明编译器插件。
这不太冗长,并且产生完全相同的结果。

此外,如果您想将应用程序的依赖项 jar 包含在可执行 jar 中,则应该优先使用 Maven 程序集插件而不是 Maven jar 插件:

<plugins>
  <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
      <archive>
        <manifest>
          <mainClass>application.Main</mainClass>
        </manifest>
      </archive>
      <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
      </descriptorRefs>
    </configuration>
    <executions>
      <execution>
        <id>make-assembly</id> <!-- this is used for inheritance merges -->
        <phase>package</phase> <!-- bind to the packaging phase -->
        <goals>
          <goal>single</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

关于java - Maven 不会创建可运行的 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42962360/

相关文章:

java - 无法保存RelativeLayout的状态

java - 输入不匹配异常

java - 多个输出突然不写任何输出?

java - Netbeans 文件 I/O FileNotFound/FileLocation Null

eclipse - 我们可以通过命令行使用 mvn build 命令吗

java - 无法解决 Maven 中的 httpComponent 依赖关系

java - 我的 Jsoup 代码仅提取表的第一个 <td> 标记内的元素

java - 使用 Maven 生成 JAR

java 使用 jsoup 和等效的 xpath 查找表

java - Jsoup:获取任何闭合标签后的文本