0

我有一个现有的 java 项目。这是一个 Maven 项目。我想将它添加到我的本地 maven 存储库中,以便在其他项目中重用。

MyUtilityClass.jar
MyUtilityClassSources.jar
MyUtilityClassDocs.jar

依赖于

slf4j-1.7.2.jar
junit-4.11.jar

这个SO Question/Answer提供了使用 mvn install:install-file 将单个文件添加到本地 maven 存储库的说明

这个SO Question/Answer提供了使用 mvn deploy-file 添加一组 jar 的说明 - 源代码、javadoc 等。

这个SO Question/Answer暗示通过 pom.xml 文件指定依赖关系,但没有提供详细信息。

我有两个要完成的任务:

  1. 将 MyUtilityClass 的项目添加到我的本地存储库中,并在我拉入它们时自动添加源、文档和依赖项。

  2. 我想为 MyUtilityClass 项目创建一个 maven 任务,将最新最好的包添加到我的本地存储库中。

我使用 eclipse 作为 IDE 和 maven 版本 3.0.4。该项目的 POM 如下所示:

<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.local.mine</groupId>
  <artifactId>MyUtilityClass</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>MyUtilityClass</name>
  <url>http://maven.apache.org</url>

  <dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
    </dependency>
    <dependency>
        <groupId>com.local.mine</groupId>
        <artifactId>slf4j</artifactId><!--from local repo -->
        <version>1.7.2</version>
    </dependency>
    <dependency>
        <groupId>com.local.mine</groupId>
        <!--from local repo and shouldn't be automatically added -->
        <!-- to projects that reuse the resulting bundle -->
        <artifactId>log4j</artifactId>
     <version>1.2.17</version>
    </dependency>
  </dependencies>
</project>
4

2 回答 2

1

最简单的方法是将每个项目视为它们自己的发布周期。它们应该彼此独立。

正如您所发现的,您可以

  • 使用 install 将工件安装到本地存储库
  • 使用 install-file 将辅助工件安装到本地存储库
  • 使用 deploy 与 install(-file) 相同的步骤,但到远程存储库

这也是发布插件。当您执行 release:prepare 和 release:perform 的配对目标时,您最终会得到

  • pom 文件中的版本值更新
  • 创建的版本控制标签
  • 安装和部署的工件
  • 部署的任何源和/或 javadoc 工件

您要使用的是发布插件

于 2013-06-16T07:16:43.813 回答
0

简单的解决方案是使用

mvn install

在您想重用的项目中。这会将项目的工件安装到您的位置存储库中。

于 2013-06-16T11:46:39.693 回答