gpt4 book ai didi

java - 无法解析 mojo org.apache.maven.plugins :maven-assembly-plugin:3. 1.1 的配置

转载 作者:行者123 更新时间:2023-12-02 09:36:43 26 4
gpt4 key购买 nike

我有我的第一个多模块程序,项目结构是:

testMods
|
├───checker
│ │
│ │
│ └───src
│ | └───main
│ | └───java
│ | | │
│ | | │
│ | | └──────sample
│ | | | └───Controller.java
│ | | | └───Main.java
| | | | └───MainLauncher.java
│ | | |
| | | └──────module-info.java
│ | |
| | └────resouces
| | └───META-INF
| |
| └────pom.xml
|
└───TextInputProgram
| │
| │
| └───src
| | └───main
| | └───java
| | │
| | │
| | └───project
| | | └───Name1.java
| | | └───Name2.java
| | | └───Name3.java
| | | └───Name4.java
| | |
| | └───module-info.java
| |
| └────pom.xml
|
└────pom.xml

检查器内的 POM:

<?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">
<parent>
<groupId>org.openjfx</groupId>
<artifactId>testMods</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>

<modelVersion>4.0.0</modelVersion>

<artifactId>checker</artifactId>

<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>12.0.2</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>12.0.2</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
<version>12.0.2</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>TextInputProgram</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.3</version>
<configuration>
<source>11</source>
<target>11</target>
<mainClass>sample.MainLauncher</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>

TextInputProgram 内的 POM:

<?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">
<parent>
<groupId>org.openjfx</groupId>
<artifactId>testMods</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>TextInputProgram</artifactId>

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

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
</dependencies>
</project>

主要 POM(testMods):

<?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.openjfx</groupId>
<artifactId>testMods</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

<modules>
<module>checker</module>
<module>TextInputProgram</module>
</modules>

<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<archive>
<source>11</source>
<target>11</target>

<manifestEntries>
<Automatic-Module-Name>selenium-api</Automatic-Module-Name>
<Automatic-Module-Name>selenium-chrome-driver</Automatic-Module-Name>
</manifestEntries>

<manifest>
<addClasspath>true</addClasspath>
<mainClass>sample.MainLauncher</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
<dependencies>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>7.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>

当我尝试使用 maven-assemble-plugin 构建为具有所有依赖项的 jar 时,我总是遇到问题:

Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:3.1.1:single (make-assembly) on project testMods: Unable to parse configuration of mojo org.apache.maven.plugins:maven-assembly-plugin:3.1.1:single for parameter source: Cannot find 'source' in class org.apache.maven.archiver.MavenArchiveConfiguration

即使我使用路径更改 maven-assemble-plugin 的版本,也会出现同样的问题:

\.m2\repository\org\apache\maven\plugins\maven-assembly-plugin

使用 \.m2\repository\org 路径删除 org 文件夹,无助于解决此问题。当maven重新加载所有依赖项时,我收到错误:再次无法解析mojo的配置

我注意到,我不是为所有模块获取单个 jar,而是分别获取两个 jar,但不是为所有模块获取单个 jar。在编译过程中,我得到的目标文件夹只是针对单独的模块,而不是针对主POM。

如果我在主 POM 中删除:

<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>

然后我在打包编译期间没有看到这个错误。插件可以工作,但我只会得到单独的 jar ,例如:

  • checker-1.0-SNAPSHOT.jar
  • TextInputProgram-1.0-SNAPSHOT.jar(在自己的模块文件夹中)

如果我运行其中一个,我会看到:

no main manifest attribute, in D:\IdeaProject\testMods\testMods\checker\target\checker-1.0-SNAPSHOT.jar

但我在资源文件夹 MANIFEST 中生成,您可以看到我的结构。为了创建它,我在“项目结构 -> Artifact ”中选择了以下选项: enter image description here

此外,我尝试在主POM中使用maven-shade-plugin而不是maven-assemble-plugin。在这种情况下,我可以编译和打包,但我再次有两个不同的 jar 作为单独的模块,例如:

  • original-TextInputProgram-1.0-SNAPSHOT.jar
  • TextInputProgram-1.0-SNAPSHOT.jar
  • checker-1.0-SNAPSHOT.jar
  • original-checker-1.0-SNAPSHOT.jar

但不是包含所有这些的主 jar。

有人可以告诉我我需要在这里更正什么才能获得包含所有模块的最终 jar 吗?

最佳答案

我通过以下两行删除进行了构建

<source>11</source>
<target>11</target>

来自 parent(testMods) pom 的 maven-assemble-plugin 插件部分,并且构建成功

根据 assembly:single 的文档,没有任何名为 sourcetarget 的标记定义为有效参数,因此插件失败,无法找到 'source'(第一个无效标记)

关于java - 无法解析 mojo org.apache.maven.plugins :maven-assembly-plugin:3. 1.1 的配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57449879/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com