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

问题描述:

m2eclipse插件有一个项目选项“解决Workspace项目的依赖性”,它告诉下游Maven项目使用上游依赖关系的target/classes目录而不是使用打包的jar。有什么办法可以告诉mvn做同样的事情吗?我可以使用未打包项目作为Maven中的依赖项吗?

举例来说,如果我有有两个项目,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存储库的解压缩类?

你为什么不把foo和酒吧在一个多模块项目是这样的:

PROJ 
    + foo 
    + bar 

而且,通过这样的结构,你不应该建立foo和酒吧分开。只需在PROJ级别构建,一切都很好。反应堆内的相关性已解决,不需要明确地逐个安装它们。

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

你的第二个参数不适用。实际上,您不应该将命令行目标目录与Eclipse混合。 Eclipse中的许多功能对输出文件夹中的外部更改很敏感。如果你做了你提到的(保存在eclipse中,并且希望在命令行构建中选择更新的类文件),命令行构建将会在Eclipse中“破坏”输出数据并导致问题。 (这就是为什么人们想办法分开输出文件夹,而不是:http://www.jroller.com/eu/entry/configuring_separate_maven_output_folders