我可以使用未打包项目作为Maven中的依赖项吗?
m2eclipse插件有一个项目选项“解决Workspace项目的依赖性”,它告诉下游Maven项目使用上游依赖关系的target/classes
目录而不是使用打包的jar。有什么办法可以告诉mvn
做同样的事情吗?我可以使用未打包项目作为Maven中的依赖项吗?
举例来说,如果我有有两个项目,foo
和bar
和bar
取决于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)