- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个多模块 pom,我想为父组件组装一个带有依赖项的 jar。但我不需要为每个模块构建程序集,它们没有程序集描述符。因此,我使用 maven- assembly-plugin 的 runOnlyAtExecutionRoot 参数,但取得了有限的成功:
mvn 编译程序集:single -DrunOnlyAtExecutionRoot=true
如果我将参数输入到父 POM 中,它会被忽略:mvn 编译程序集:单个
在 pom.xml 中:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.orgPOM/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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my.company</groupId>
<artifactId>thisApp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>thisApp Parent Project</name>
<modules>
<module>my.company.thisApp.main</module>
<module>my.company.library-1</module>
<module>my.company.library-1.library-1-1</module>
<module>my.company.library-1.library-1-2</module>
<module>my.company.library-2</module>
<module>my.company.library-3</module>
<module>my.company.library-3.library-3-1</module>
</modules>
<build>
<pluginManagement>
<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>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<dependencies>
<dependency>
<groupId>my.company.thisApp</groupId>
<artifactId>main</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
第二种方法不起作用,它尝试组装每个模块,但失败,因为“找不到它们的组装描述符”。
在 POM 中指定参数 runOnlyAtExecutionRoot 的正确方法是什么?我也尝试过将其放入“执行”中,但没有成功。
最佳答案
它失败了,因为无法为带有打包 POM 的项目(如父项目)组装描述符引用“jar-with-dependencies”。运行时:
mvn clean package assembly:single
我收到以下错误消息:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:3.0.0:single (default-cli) on project my-parent: Failed to create assembly: Error creating assembly archive jar-with-dependencies: You must set at least one file.
它表示必须至少有一个文件,这意味着必须将至少一个文件添加到程序集中。由于没有打包的jar,所以无法完成。
解决方案是在父 POM 中使用程序集描述符,它添加打包的 jar 和 jar 模块库(请参阅 copy-dependencies )或 uber jar(请参阅 shade )。
示例:在父项目的 src/main/assemble/下创建描述 rune 件,并在插件配置中的“descriptors”下引用它。我的描述符称为“my-descriptor.xml”
<configuration>
<runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
<descriptors>
<descriptor>${project.basedir}/src/main/assembly/my-descriptor.xml</descriptor>
</descriptors>
</configuration>
描述符将所需的文件添加到分发 zip 文件中。我的描述符获取模块“my-service”的打包 jar,如下所示:
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
<id>distribution</id>
<formats>
<format>zip</format>
</formats>
<files>
<file>
<source>my-service/target/my-service-${project.version}.jar</source>
<outputDirectory>/</outputDirectory>
</file>
</files>
</assembly>
关于java - pom 中 runOnlyAtExecutionRoot 的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41681709/
我有一个多模块 pom,我想为父组件组装一个带有依赖项的 jar。但我不需要为每个模块构建程序集,它们没有程序集描述符。因此,我使用 maven- assembly-plugin 的 runOnlyA
我是一名优秀的程序员,十分优秀!