我可以在Maven中使用未打包的项目作为依赖项吗?

时间:2012-07-31 00:33:59

标签: maven maven-3

m2eclipse插件有一个项目选项“解决来自Workspace项目的依赖关系”,它告诉下游Maven项目使用上游依赖项的target/classes目录而不是使用打包的jar。有没有办法告诉mvn做同样的事情?

例如,如果我有两个项目foobarbar取决于foo,那么在命令行上我必须打包并安装在我运行foo之前bar

cd ~/foo
mvn package install
cd ~/bar
mvn prepare-package
java -cp target/classes:$(mvn -o -q -Dmdep.outputFile=/dev/stdout dependency:build-classpath) Bar

但我想避免打包所有项目,因为1)它是大量的冗余I / O,2)如果我在Eclipse中保存并从命令行运行,很容易忘记再次打包所有项目,并且那时我会浪费时间想知道为什么我的改变不起作用。

那么有没有办法更改pom.xml以便mvn命令使用mvn prepare-package中的解包类而不是mvn install存储库?

1 个答案:

答案 0 :(得分:0)

为什么不把foo和bar放在像这样的多模块项目中:

PROJ
  + foo
  + bar

而且,有了这样的结构,你不应该分别建立foo和bar。只需在PROJ级别建立,一切都很好。依赖关系在reactor内解决,您无需逐个安装它们。

它没有保存你提到的“额外IO”,但老实说唯一的区别只是创建了JAR,与其他事情相比,这实际上是最小的。

你的第二个论点也不成立。实际上,您不应该将命令行目标目录与Eclipse混合使用。 Eclipse中的许多功能对输出文件夹中的外部更改很敏感。如果你做你提到的(保存在eclipse中,并期望在命令行构建中获取更新的类文件),命令行构建将“损坏”(在Eclipse的角度来看)输出数据并导致Eclipse中的问题。 (这就是为什么人们想出了分离输出文件夹的方法:https://stackoverflow.com/a/54366009/34088