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

时间:2016-02-22 06:37:37

标签: java eclipse maven dependencies

我有两个项目, 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 Project作为依赖项添加到我的Maven项目中?

无论如何,谢谢你。)

2 个答案:

答案 0 :(得分:2)

正如您所说,您的问题是您依赖于不使用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 REPO OPTION

在这种情况下,最有趣的选择是在私人/公司Nexus或Artifactory上部署您的从属jar

但是,如果您无法访问私有/公司存储库,则可以在项目中使用本地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存储到本地maven存储库(而不是HOME/.m2/repository )中GROUP.ARTIFACT.VERSION

在您的项目pom

上声明本地maven回购

创建本地maven repo后,请在pom.xml中按如下方式声明:

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

声明依赖

创建并声明本地maven repo后,请使用它。按如下方式创建依赖项:

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

你不必做任何其他事情。

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

答案 1 :(得分:0)

使用Eclipse最简单的方法是:

  1. 将Java项目转换为Maven项目Configure->Convert to Maven Project。填写Group IdArtifact Idversion

  2. Run As->Maven install

  3. 在要使用它们的项目中,在pom.xml

  4. 中添加上面创建的依赖项信息。