java - maven repos 是否像其他依赖项一样支持 uber jar?
问题描述
我想像我的其他依赖项一样打包和部署一个 uber jar 到 maven repo
看起来虽然默认情况下,即使我使用阴影,my-repo
当我运行时uber jar 也没有部署到mvn deploy
。如何将我的 uber jar 部署到 maven repo 以便能够下载它以供以后使用 - 甚至将 uber jar 作为另一个 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">
<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>
解决方案
您可以在 shade 插件配置部分使用<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>
推荐阅读
- python - Python3 Cryptodome - 如何解密 pem?
- python - 在虚拟环境中安装 python 站点包
- sql - 通过 VBA 将 Excel 转换为 SQL
- java - 为什么以下三个字符串的哈希码相同?
- acumatica - 如何使用同一页面的重定向操作在第二个表单上设置字段
- vb.net - 通过单击按钮使用 SQL 设置布尔值
- sql - 合并特定列中具有相同值的行
- ruby - 用符号初始化 Ruby 类,在 (menu:) 之后有两个点
- visual-studio-code - 尝试创建新的 Gauge 项目时出错
- react-native - 为什么我的 stacknavigator 在一个屏幕上工作而不是在另一个屏幕上工作?