繁体   English   中英

如何在另一个 Java 项目中使用整个 Java 项目并实例化和使用类和方法?

[英]How to use an entire Java project inside another Java project and instantiate and use classes and methods?

我遇到了一种情况,我有一个 maven 项目,有几个类和方法……我需要在其他一些需要它们的项目中拥有相同的项目类和方法。

在阅读了一些关于 Git 子模块和 Git 子树以及其他实现此目的的方法之后。 我决定导出一个 Jar 文件及其依赖项,并将其复制到“${basedir}/lib/”子目录中的所有其他项目。 这样我就可以让我的 QA 团队中的所有开发人员保持足够简单(我们不是经验丰富的开发人员,因为我们来自 QA 世界),而且我可以控制他们所有人在所有项目中都使用相同的库。

我使用程序集 maven 插件导出到 Jar 文件,在第一个 repo 中将其添加到我的 POM 文件中:

        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>fully.qualified.MainClass</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
        </plugin>

并运行

$ mvn clean compile assembly:single

我在“目标”目录中有 Jar 文件,我将其复制到所有其他存储库。 在每个 repo 的“lib”目录中。

然后在其他 repos 的 POM 文件中,我添加到他们的 POM 依赖项部分:

<dependency>
    <groupId>myDep</groupId>
    <artifactId>myDep</artifactId>
    <version>1.0-SNAPSHOT</version>
    <scope>system</scope>
    <systemPath>${basedir}/lib/myDep-1.0-SNAPSHOT-jar-with-dependencies.jar</systemPath>
</dependency>

问题是我无法弄清楚如何在我的课程中导入 Jar 以使用我需要从这个导入的 Jar 中使用的方法。 当我尝试导入时

import myDep.* 

但它不起作用。

你能指出我正确的方向吗? 太感谢了!

通常,在开始使用 Maven 之前,您需要设置一些基础架构:

  1. 用于工件(罐子、战争等)的 Nexus 或 Artifactory 服务器

  2. 像 Jenkins 这样的构建服务器。

然后,您使用mvn clean deploy在 Jenkins 上构建您的 jars(没有像 maven 程序集插件之类的任何东西)。 然后它们在 Nexus/Artifactory 中可用。

如果开发人员有一个settings.xml指向正确的 Nexus/Artifactory,那么他们可以添加

<dependency>
    <groupId>myDep</groupId>
    <artifactId>myDep</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

到他们的pom.xml没有指定任何路径或复制任何东西。 Maven 然后会神奇地解决来自 Nexus/Artifactory 的依赖关系。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM