gpt4 book ai didi

java - 构建 Maven Java 项目时如何包含其他 Java 项目

转载 作者:行者123 更新时间:2023-11-30 08:04:32 24 4
gpt4 key购买 nike

我有两个项目,Java 项目Maven Java 项目。我使用此 pom 设置将我的 Maven Java 项目构建为可运行的 jar 文件。

<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<finalName>ISO8583PostpaidServer</finalName>
<!-- <finalName>ISO8583PrepaidServer</finalName> -->
<archive>
<manifest>
<!-- If you want to compile as Prepaid change this class reference -->
<mainClass>PostpaidServer</mainClass>
<!-- <mainClass>PrepaidServer</mainClass> -->
</manifest>
</archive>

<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>

<appendAssemblyId>false</appendAssemblyId>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>

</plugins>
</build>

但是我收到一个错误,因为在我的构建路径中我向我的 Java 项目 添加了依赖项。如何将标准 Java 项目添加为我的 Maven 项目的依赖项?

还是谢谢你:)

最佳答案

正如您所说,您的问题是您依赖于一个不是由 maven 管理的 Java 项目。

我认为你有两个选择:

  • 将该项目转换为 Maven 项目,并创建一个多模块 Maven 项目。如果您是其他项目的所有者,这会很方便。
  • 构建该项目,获取 jar 并创建您自己的本地 maven 存储库。如果您无法管理其他项目,或者您只想用作依赖项,这会很方便。

1。转换为 MAVEN 并创建多模块

如果你有工程源码,而且因为是自己的所以可以改,最好的选择是:

  • 转换为maven项目
  • 创建一个包含两个模块的父 Maven 项目:您的项目和转换后的项目。
  • 添加依赖项。

转换为maven项目

将Java标准项目转换为maven项目并不难:

  • 将源和资源路径更改为 src/main/java/src/main/resources/
  • 声明依赖关系。
  • 配置插件。

如果您是所有者并控制该项目,您可以在几分钟内对其进行转换。如果您无法控制项目,这可能是一项乏味的任务。

创建父项目

一旦你转换了你的依赖项目,创建一个新的项目结构如下:

parent
├── module1
│ ├── src ...
│ └── pom.xml
├── module1
│ ├── src ...
│ └── pom.xml
└── pom.xml

您的父 pom.xml 将声明一个 modules 部分以包含这两个模块,并且您的模块 pom.xml 将包含一个 parent 部分引用父项目。

父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/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>GROUP</groupId>
<artifactId>PARENT</artifactId>
<packaging>pom</packaging>
<version>VERSION</version>

...

<modules>
<module>module1</module>
<module>module2</module>
</modules>

...

模块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/maven-v4_0_0.xsd">

<parent>
<groupId>GROUP</groupId>
<artifactId>PARENT</artifactId>
<version>VERSION</version>
</parent>

<modelVersion>4.0.0</modelVersion>

<artifactId>MODULE1</artifactId>
<packaging>jar</packaging>

声明依赖

最后在module1上声明对module2的依赖

<dependency>
<groupId>GROUP</groupId>
<artifactId>MODULE2</artifactId>
<version>VERSION</version>
</dependency>

2。自己的本地 MAVEN repo 选项

在这种情况下,最有趣的选择是将依赖的 jar 部署到私有(private)/企业 Nexus 或 Artifactory 上。

但是,如果您无权访问私有(private)/公司存储库,则可以在您的项目中使用本地 Maven 存储库。这种方式有一个优势,因为所有程序员都可以在没有命令的情况下解决所有依赖关系。

创建本地存储库

首先,您必须创建一个文件夹来存储本地maven 存储库。我将在您存储库的根路径中执行此操作,例如将其命名为 local-libs

然后,当你想添加一个私有(private)jar时,运行下面的命令:

mvn org.apache.maven.plugins:maven-install-plugin:2.3.1:install-file \
-Dfile=YOU_FILE.jar \
-DgroupId=GROUP \
-DartifactId=ARTIFACT \
-Dversion=VERSION \
-Dpackaging=jar \
-DlocalRepositoryPath=local-libs

此命令会将您的 jar 作为 GROUP.ARTIFACT.VERSION< 存储到您的本地 Maven 存储库(而不是您的 HOME/.m2/repository)/.

在你的项目 pom 上声明本地 maven 仓库

创建本地 Maven 存储库后,在 pom.xml 中声明它如下:

<repositories>
<repository>
<id>local-repo</id>
<name>Local Repo</name>
<url>file://${project.basedir}/local-libs</url>
</repository>
</repositories>

声明依赖

一旦您创建并声明了您的本地 maven 存储库,就可以使用它。创建一个依赖如下:

<dependency>
<groupId>GROUP</groupId>
<artifactId>ARTIFACT</artifactId>
<version>VERSION</version>
</dependency>

而且您无需执行任何其他操作。

一旦你创建了你的本地 maven 仓库,每个获取你的仓库的程序员都可以立即工作,不需要再次运行任何 mvn 命令。

关于java - 构建 Maven Java 项目时如何包含其他 Java 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35547222/

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