无主清单属性错误-带maven jar插件的intellij

zqdjd7g9  于 2021-07-08  发布在  Java
关注(0)|答案(4)|浏览(458)

我正在关注这个链接上的教程(https://stackabuse.com/web-scraping-the-java-way/),但是当要打包项目并运行jar时,当我使用 java -jar target/ApartmentHunt-1.0-SNAPSHOT.jar . 我的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>org.example</groupId>
  <artifactId>ApartmentHunt</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>ApartmentHunt</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jsoup</groupId>
      <artifactId>jsoup</artifactId>
      <version>1.13.1</version>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <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.ManifestResourceTransformer">
                    <mainClass>org.example.App</mainClass>
                  </transformer>
                </transformers>
              </configuration>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

java有main方法,位于src/main/java/org.exmaple中,只包含一个print语句。代码与教程完全相同,但我得到一个错误。我从教程中克隆了repo,它在我的机器上工作,所以我不确定我的项目出了什么问题。这是我第一次在项目中使用maven,我使用了maven快速启动原型。
我使用了其他帖子中的各种汇编插件,但它并没有解决我的问题。

5lhxktic

5lhxktic1#

检查代码主方法是否在app.java中

gudnpqoy

gudnpqoy2#

将以下插件添加到my pom.xml并运行 mvn assembly:single 解决了这个问题。虽然我不明白为什么我不能跑 mvn package 做同样的事情时,我在插件中指定发生在打包阶段。另外,我必须 mvn compile 在任何源代码更改之后。下面的代码

<plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <configuration>
            <archive>
              <manifest>
                <mainClass>org.example.App</mainClass>
              </manifest>
            </archive>
            <descriptorRefs>
              <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
            <appendAssemblyId>false</appendAssemblyId>
          </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>
lrl1mhuk

lrl1mhuk3#

用maven jar插件试试

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
    <archive>
        <manifest>
            <addClasspath>true</addClasspath>
            <mainClass>org.example.App</mainClass>
        </manifest>
    </archive>
</configuration>
</plugin>

运行mvn命令:

> mvn clean
> mvn install
mnemlml8

mnemlml84#

按照本视频中的说明操作。
当您到达工件创建点(ctrl+shift+alt+s)时,更改清单的位置,如下所示(\src\main\资源)

相关问题