我有两个java maven项目-eclipse中的abc和intellij idea中的xyz。它们具有一些常见的jar依赖项。
在xyz代码中,我需要在abc的测试目录中调用一些代码。因此,我将abc转换为jar并将其导入xyz内。调用abc方法的xyz代码可以正常编译,但失败了,因为找不到abc所需的jar。这些丢失的罐子中有一些实际上存在于xyz中,而有些则不存在。
如何使xyz导入abc所需的所有依赖关系?这是重用代码的一种好方法吗?
答案 0 :(得分:1)
正确的方法:
mvn install
,将“ abc”项目安装到本地Maven存储库中。 (这将首先构建项目,然后将JAR和POM复制到本地Maven存储库中。)<dependencies>
<dependency>
<groupId>...</groupId>
<artifactId>abc</artifactId>
<version>...</version>
</dependency>
</dependencies>
这样,“ xyz”项目在类路径上也将具有“ abc”和“ abc”的依赖项。
编辑:重用测试类can be done this way:
maven-jar-plugin
以在“ abc”中建立目标为test-jar
的插件,这将创建您的测试类的JAR:<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
test-jar
分类器:<dependencies>
<dependency>
<groupId>...</groupId>
<artifactId>abc</artifactId>
<version>...</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
</dependencies>
答案 1 :(得分:-1)
还有其他几种方法。
如果abc和def项目具有一些类似的功能,则您 可以将它们分组到模块中,并在 项目,并将两个项目配置为模块,从而有效地 在一个地方共享所有依赖项,即父pom,这个 还有助于保持所有其他依赖项的版本 一致的。检查此链接以了解如何完成
https://books.sonatype.com/mvnex-book/reference/multimodule-sect-simple-parent.html
另一方面,如果abc项目仅需要def作为abc测试的依赖项,则可以将def导入为测试范围的依赖项。 这意味着它仅在测试范围内可用。那是什么意思 正常使用不需要依赖项 应用程序,仅适用于测试编译和 执行阶段,也不能传递。 因此,如下所示:-
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>