[英]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 之前,您需要设置一些基础架构:
用于工件(罐子、战争等)的 Nexus 或 Artifactory 服务器
像 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.