【问题标题】:How to include other Java Project when build Maven Java Project构建 Maven Java 项目时如何包含其他 Java 项目
【发布时间】:2020-03-05 09:49:01
【问题描述】:

我有两个项目,Java Project 和 Maven Java Project。 我使用这个 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 项目中?

还是谢谢你:)

【问题讨论】:

  • POM中没有添加依赖..
  • 请参考:avajava.com/tutorials/lessons/… 该解决方案足够长,可以在此处发布,因此仅提供 URL。
  • 是的,当然还没有添加,如何添加,在哪里添加?谢谢。
  • @Suyash 我已经看过那些教程,但在那种情况下有两个 Maven 项目。在我的例子中,一个是标准 java 项目作为依赖项,另一个是 Maven 项目。

标签: java eclipse maven dependencies


【解决方案1】:

正如您所说,您的问题是您依赖于未使用 maven 管理的 Java 项目。

我认为你有两个选择:

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

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

如果你有项目源,而且你自己可以改,最好的选择是:

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

转换为 maven 项目

将 Java Standard 项目转换为 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 回购选项

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

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

创建您的本地存储库

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

然后,当您要添加私有 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 repo,每个获得你的 repo 的程序员都可以立即工作,不需要再次运行任何mvn 命令。

【讨论】:

    【解决方案2】:

    Eclipse 最简单的方法是:

    1. 将 Java 项目转换为 Maven 项目,Configure-&gt;Convert to Maven Project。填写Group Id、Artifact Id和version。

    2. Run As-&gt;Maven install

    3. 在你想要使用它们的项目中,将上面创建的依赖信息添加到pom.xml

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-01
      • 2013-08-23
      • 1970-01-01
      • 2010-09-15
      • 2022-12-17
      • 1970-01-01
      相关资源
      最近更新 更多