gpt4 book ai didi

java - 如何正确地将预编译的jar放入maven项目中?

转载 作者:太空宇宙 更新时间:2023-11-04 14:34:18 25 4
gpt4 key购买 nike

有一个预编译的 jar 文件。我的消息来源取决于它。我需要:

  • 此文件应添加到类路径
  • 当我执行不带参数的 mvn deploy 时,文件应上传到远程存储库
  • 当其他人使用我的项目作为依赖项时,该文件应该自动从远程存储库下载并添加到类路径
  • 我希望这个 jar 有自己的 Artifact ID 和 pom 文件
  • 如果可以的话,我想保留原来的jar名称

我尝试将其放入我的 pom 中:

<repositories>
<repository>
<id>pom-local</id>
<url>file://${basedir}/repo</url>
</repository>
</repositories>

然后编写另一个pom.xml并将其和jar文件放入${basedir}/repo/。奇怪的是,根据谷歌的说法,没有人使用这个。我不知道如何保留原来的 jar 名称。而且我无法让 Maven 部署它。

attach-artifact 目标,但它需要文件名,而不是 artifactId 作为参数,并将 jar 放在同一文件夹中。

可能的解决方案:

        <dependency>
<groupId>org.foo</groupId>
<version>1.0</version>
<artifactId>eeerrr</artifactId>
</dependency>
</dependencies>

<repositories>
<repository>
<id>pom-local</id>
<url>file://${basedir}/repo</url>
</repository>
</repositories>


<properties>
<!-- Will use this instead of <distributionManagement>, because it's easier to extract url from one place -->
<altDeploymentRepository>todo::default::http://0.0.0.0</altDeploymentRepository>
</properties>

<build>
<plugins>
<!-- Extract url -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>extract-url</id>
<phase>verify</phase>
<goals>
<goal>regex-property</goal>
</goals>
<configuration>
<name>deploymentRepository.url</name>
<value>${altDeploymentRepository}</value>
<regex>.*::(.*)</regex>
<replacement>$1</replacement>
<failIfNoMatch>true</failIfNoMatch>
</configuration>
</execution>
</executions>
</plugin>

<!-- Upload additional artifact -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<executions>
<execution>
<id>deploy-3rd-party-jar</id>
<phase>deploy</phase>
<goals>
<goal>deploy-file</goal>
</goals>
<configuration>
<groupId>org.foo</groupId>
<artifactId>eeerrr</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<file>${basedir}/repo/org/foo/eeerrr/1.0/eeerrr-1.0.jar</file>
<url>${deploymentRepository.url}</url>
</configuration>
</execution>
</executions>
</plugin>
</plugins>

最佳答案

假设这个预编译的 jar 不经常更改。您可以使用 mvn install:install-file 和 mvn deploy:deploy-file 一次性部署到本地缓存存储库和远程存储库。

看看How to deploy jars to nexus with cmd ,这是一个类似的问题。

关于java - 如何正确地将预编译的jar放入maven项目中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25783822/

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