我有一个多模块的项目,即。
parent
module1
module2
在一个开发周期中,我向Module1添加了一个类mod1.a
。module2中的类mod2.b
依赖于它。
我的本地.m2/repository
中没有这些工件。运行此:
$ cd prj/module2
$ mvn -o exec:java -Dexec.mainClass=mod2.B
The following artifacts could not be resolved: com.example:module1:jar:1.0-SNAPSHOT
然而,这至少从两个方面提出了一个问题:
这两种方法都有解决方案(第一种方法跳过构建的部分,第二种方法跳过不同的快照版本),但它们在实践中远不能使用。
如果我正确理解您的问题,那么您似乎有点超出了常规:您有两个带有不同修改的项目的本地“副本”,您希望在运行“exec:java”时交替使用这些副本。Maven正在阻碍您的工作:它希望您的本地.m2
存储库区域发挥作用,但每个副本中的版本字符串都是相同的,因此您最终会在副本之间进行更改。
对我来说,这听起来像是你试图做的是测试你的改变。我建议您只需在module2中编写一个实际的JUnit或TestNG测试,测试您想要的内容(如果需要,它可以直接调用mod2.b Main)。然后,从您选择的项目目录中,您可以运行mvn test-dtest=mytestname
。它不会“安装”任何东西,它会按照您希望的方式找到依赖项。
否则,我可以看到三种选择。
mvn versions:set-dnewversion=b-snapshot
可以为您执行此操作)。这样,您在该副本上工作的任何“安装”JAR都不会被另一个副本考虑,反之亦然。你说这个“远不能用”...我想应该没问题?这些是项目的不同版本!它们应该有不同的版本字符串!在这三个选项中,我强烈推荐这个选项。(如果使用了:set
,则可以执行MVN版本:还原
,或者可以依赖版本控制撤消更改。)mvn
进程)中查找依赖项,但这意味着所有必需的模块必须在要查找的反应器中可用,这意味着您只能在顶层运行mvn
。因此,如果您只想在单个模块中执行“mvn exec:java”,则mvn需要在某个地方找到该模块的依赖项...这就是本地回购通常的用途。如果您坚持使用选项3(而不是选项1),那么我建议您按照问题上的注释创建一个配置文件,该配置文件针对module2选择性地运行exec
,并将其绑定到一个生命周期阶段。但在实践中,这非常接近于用一个测试来包装它。
我有一个多模块项目,其中两个子模块中的一个依赖于另一个。这个问题意味着应该处理这些依赖关系。 在我的机器上的本地级别上一切都很好(在Eclipse内部和命令行上)。但是,当我更新修改第二个模块所需代码的模块并提交到我的github存储库时,第二个模块将无法构建Travis CI。我将问题追溯到这样一个事实,即它正在从存储库下载其依赖项,而不是使用它刚刚编译的存储库。 和父pom.xml的摘录: 完
我试图在我的文件系统上为maven和gradle维护相同的存储库。但是我遇到了一些问题。 我的 GRADLE_USER_HOME是 我的gradle主页与我的Maven存储库相同。 但是,当通过gradle下载依赖项时,它们将被下载到gradle\u USER\u HOME\cache中,而不是存储库文件夹中。我缺少什么配置? 编辑我已经查看了《Gradle In Action》一书中关于依赖关系
我有这个项目https://github.com/andreacatania/libreria 它有三个模块“deWeb”“decore”“libreriaear” 模块libreriaEar创建了一个带有deweb和decore模块的EAR存档。我试图将Hibernate使用到模块“decore”中,但maven没有将依赖项导入到“decore”模块中,因此我收到了NoClassFoundExc
我在Maven中有一个相当简单的带有子模块的项目结构: 在中,我定义了所有子模块的属性,如库版本或插件配置: 直接在节点中设置库版本。 在中设置节点。 尝试不同的库版本。 使用以及库是否存在。 在中运行。 在中运行。 在中运行 在中运行。 在中运行。
我对maven是新手,在将pom.xml中定义的依赖项下载到本地存储库时遇到了问题。正确下载pom.xml中定义的所有其他依赖项。此外,跨多个项目的其他依赖关系也运行良好。我使用的是maven 3.5.2和aws sdk 1.11.86 导致问题的依赖项是定义为的aws红移驱动程序- Maven存储库- 我的本地回购协议有以下内容- 我已经删除了本地文件。上次更新的文件,但无法解决此问题<有什么想
问题内容: 我有一个多模块项目:父POM.xml: rest-client-microservice的POM.xml如下所示: email-commons模块的POM.xml如下所示: 如果我尝试在父项目上执行,则会得到以下结果: 我已经在这个问题上困扰了好几天,但是我不知道为什么这不起作用。 问题答案: 我想到了。rest-client-microservice是一个Spring Boot项目,