maven - maven-dependency-plugin 复制的依赖项的 jar-s 未安装到本地存储库
问题描述
有模块 A、B 和 C。模块 A 是模块 B 和 C 的依赖项。模块 A 中构建的所有 jar-s 都将分发到 Maven Central,但只有在模块 B 和 C 中的集成测试通过后。
为了实现上述目标,我决定实现一个多模块项目,其中包含一个专门用于分发的模块 D。
由于分发模块 D 有自己的特定坐标,模块 A 的 jar-s 将被重命名。
我的想法是将模块 A 中的 jar-s 作为依赖项复制到模块 D 的目标目录,并根据模块 D 坐标进行重命名。这是模块 D pom:
<parent>
<groupId>...</groupId>
<artifactId>parent</artifactId>
<version>0.1.0-SNAPSHOT</version>
</parent>
<groupId>...</groupId>
<artifactId>...</artifactId>
<packaging>pom</packaging>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.1</version>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>${project.version}</version>
<type>jar</type>
<overWrite>true</overWrite>
<outputDirectory>${project.build.directory}</outputDirectory>
<destFileName>${project.artifactId}-${project.version}.jar</destFileName>
</artifactItem>
<artifactItem>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>${project.version}</version>
<type>jar</type>
<classifier>sources</classifier>
<overWrite>true</overWrite>
<outputDirectory>${project.build.directory}</outputDirectory>
<destFileName>${project.artifactId}-${project.version}-sources.jar</destFileName>
</artifactItem>
<artifactItem>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>${project.version}</version>
<type>jar</type>
<classifier>javadoc</classifier>
<overWrite>true</overWrite>
<outputDirectory>${project.build.directory}</outputDirectory>
<destFileName>${project.artifactId}-${project.version}-javadoc.jar</destFileName>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
jar-s 从模块 A 复制到模块的 D 目标目录,但安装阶段完成后,我的本地存储库中只更新模块的 D pom。在构建日志中也没有关于安装复制的 jar-s 的记录。
同时,模块A的jar-s安装成功。
我试图将模块 D 的打包更改为 jar,但之后只安装了带有二进制文件的 jar,并且没有安装带有源代码和 javadoc 的 jar-s。
目前找到以下解决方法:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<file>${project.build.directory}/${project.artifactId}-${project.version}.jar</file>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<packaging>jar</packaging>
<javadoc>
${project.build.directory}/${project.artifactId}-${project.version}-javadoc.jar
</javadoc>
<sources>
${project.build.directory}/${project.artifactId}-${project.version}-sources.jar
</sources>
</configuration>
</execution>
</executions>
</plugin>
还有其他不那么笨拙的解决方案吗?
谢谢。
解决方案
该方法过于复杂。
你应该怎么做:
- 建个
- 用 B 和 C 测试 A
- 部署一个
根据您的方法,有不同的可能性来实现这一点。例如,您可以使用deployAtEnd
Maven 部署插件的属性。
推荐阅读
- javascript - 如何重定向到第三方网页的特定部分?
- javascript - 我正在寻找一个 Angular JS 多选树视图(带有 Checkbox )。你知道任何?
- python - Python pkg_ressources 不适用于非 root 用户
- linux - 将 bash 跟踪 (set -x) 传播到所有子脚本
- css - 当没有固定的高度或宽度时,使图像具有相同的高度
- r - 存储嵌套循环的未知长度结果
- azure - 如何使用 python 正确地将数据输出到 Azure ML Batch Endpoint?
- javascript - Phaser 3全面屏
- wordpress - 我需要使用 PHP for 循环在 Dom PDF 上的 2 个不同页面上创建一个表格?
- gradle - 在 build.gradle.kts 中添加一个名为“main”的 Activity