Maven项目设计 - 共享一个共同的项目

Ron*_*onK 6 java maven

我是Maven的新手,我正在尝试将一些项目转换为Maven工作,我不确定构建它们的正确方法是什么 - 这就是我所拥有的:

我有一个共同的模块 - 命名Common和两个不同的应用程序,它们与它们都依赖的事实没有任何共同之处Common.让我们把它们AB.

A- > CommonB- > 之间的依赖关系Common既适用于运行时也适用于测试 - 这意味着A测试类需要Common测试类.

我尝试了各种我能想到的组合 - 但是他们没有产生我想要的东西.奇怪的是我的代码编译,但JUnits失败,因为在类Common路径中找不到测试类.

我要补充2个轮廓对Common创建2件文物及添加2只依赖AB这两个文物?(这可能吗?)有没有正确的方法来做我想要的?我应该重构我的代码以适应Maven吗?

Tom*_*icz 5

这是一个常见的maven陷阱.当您依赖该工件时,工件中的测试类不可用.这实际上是合理的:当你依赖时Common,你依赖于生产类(JAR文件).测试类仅用于运行测试,甚至不包含在最终的JAR中.

假设您的Common测试类包含所有Common测试AB测试所需的一些实用方法,这里是一个建议的结构:

  • Common-test- 包含(!)中的常用实用程序测试类(不是测试用例/src/main/java!)
  • Common取决于Common-test<scope>test</scope>
  • AB依赖于Common(默认范围)和Common-test(test范围)

UML