我可以在Maven中将未打包的项目用作依赖项吗?
m2eclipse插件有一个项目选项“Resolve dependencies from Workspace projects”,它告诉下游Maven项目使用上游依赖项的我可以在Maven中将未打包的项目用作依赖项吗?,maven,maven-3,Maven,Maven 3,m2eclipse插件有一个项目选项“Resolve dependencies from Workspace projects”,它告诉下游Maven项目使用上游依赖项的target/classes目录,而不是使用打包的JAR。有没有办法告诉mvn做同样的事情 例如,如果我有两个项目,foo和bar,并且bar依赖于foo,那么在运行bar之前,我必须在命令行上打包并安装foo: cd ~/foo mvn package install cd ~/bar mvn prepare-package
target/classes
目录,而不是使用打包的JAR。有没有办法告诉mvn做同样的事情
例如,如果我有两个项目,foo
和bar
,并且bar
依赖于foo
,那么在运行bar
之前,我必须在命令行上打包并安装foo
:
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和bar放在这样的多模块项目中呢:
PROJ
+ foo
+ bar
而且,有了这样的结构,您不应该单独构建foo和bar。只需在项目级别进行构建,一切都很好。依赖关系在reactor中解决,您不需要显式地逐个安装它们
它并没有保存您提到的“额外IO”,但老实说,唯一的区别只是创建了一个JAR,它实际上与其他事情相比是最小的
你的第二个论点不成立。事实上,您不应该将命令行目标目录与Eclipse混合使用。Eclipse中的许多功能对输出文件夹中的外部更改很敏感。如果您执行了您提到的操作(保存在eclipse中,并希望在命令行构建中获取更新的类文件),那么命令行构建将“损坏”(在eclipse的视角中)输出数据,并在eclipse中导致问题。(这就是为什么人们想出了分离输出文件夹的方法:)