我想像我的其他依赖项一样打包并部署一个 uber jar 到 Maven 存储库。
看起来默认情况下,即使我使用的是阴影,当我运行
my-repo
时,超级罐子也没有部署到mvn deploy
。如何将我的 uber jar 部署到 Maven 存储库以便能够下载它以供以后使用,甚至可以在另一个 POM 中引用 uber jar 作为依赖项?
<?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>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<name>my-app</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>
</dependencies>
<build>
<plugins>
<!-- Use shade to create uber jar -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<finalName>uber</finalName>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<distributionManagement>
<repository>
<id>my-repo</id>
<name>my-repo</name>
<url>https://blah.jfrog.io/blah/my-repo</url>
</repository>
<snapshotRepository>
<id>my-repo</id>
<name>my-repo</name>
<url>https://blah.jfrog.io/blah/my-repo</url>
</snapshotRepository>
</distributionManagement>
</project>
您可以使用阴影插件配置部分中的
<shadedArtifactAttached>
和 <shadedClassifierName>
属性来执行此操作。
看看这个:https://maven.apache.org/plugins/maven-shade-plugin/examples/attached-artifact.html
在项目中你必须配置
<maven-shade-plugin>
:
<?xml version="1.0" encoding="UTF-8"?>
<project>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>uber-jar</shadedClassifierName>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
在依赖项目中,您可以使用该工件作为依赖项:
<?xml version="1.0" encoding="UTF-8"?>
<project>
<!-- ... -->
<dependencies>
<dependency>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<classifier>uber-jar</classifier>
</dependency>
</dependencies>
</project>