相关疑难解决方法(0)

Maven和依赖模块

同事们一直在兜售maven及其魔法依赖的奇迹,但我发现它在我认为显而易见的用途上失败了.

假设我有一个带有主POM的根文件夹.

然后我有一些项目,称他们为A和B.

B需要A,因此B文件夹中的POM中包含相应的依赖项

现在,回到根文件夹,在配置文件中,我指定我要构建B.

当我执行通常的mvn clean安装时,我得到了一个失败,因为A没有构建.

我的朋友告诉我,我必须在根目录中的主要配置文件中指定A和B.

但是不是maven看到B的依赖管理的全部要点,转到B POM文件,它看到对A的依赖,所以它应该自动构建A.

java build-process maven-2

50
推荐指数
5
解决办法
8万
查看次数

如何解决多模块项目中模块之间的依赖关系?

在与Maven合作一段时间后,我对Maven为构建体系结构带来的许多功能感到兴奋,特别是依赖管理.但是,我一次又一次遇到一个问题--Maven如何解决多模块项目之间的依赖关系.我想知道这是否是当前Maven实施的一个重大缺陷和/或是否有任何令人满意的解决方法.

假设我有一个多模块Maven项目.Parent pom包含三个模块 - moduleA(jar),moduleB(jar)和moduleC(war).B取决于A和C取决于B.简单吗?现在我想mvn dependency:go-offline在父项目上运行,该项目应该解析所有依赖项并将它们带入本地.m2目录.它失败了,因为Maven抱怨说当它作用于moduleB时它无法解决moduleA的依赖关系.因为所有这些模块都属于一个groupId,我甚至尝试使用它-DexcludeGroupIds=x.y.z来排除这些模块依赖关系,但它仍然在同一点上失败.

我理解为什么Maven抱怨 - moduleA还没有构建,因此当执行脱机目标时,我的本地或内部存储库中没有moduleA:jar工件.但IMHO插件应该以不同方式处理这些模块间依赖关系.在这种情况下,它应该简单地忽略它.有人可能会说我可以这样做mvn clean install,它会将moduleA:jar安装到本地存储库中.在那之后,运行mvn dependency:go-offline肯定会起作用.但是这种解决方法违背了这个离线目标的目的.这个插件允许我们解析并将依赖项拉入我们的本地存储库,而无需构建整个项目.我dependency:copy-dependencies在另一个案例中使用了目标,它有同样的问题.

我在其他场景中也遇到了类似的问题:"mvn clean generate-source"无法解决依赖关系.当我运行时mvn clean compile,一切正常,但是当我运行时mvn clean generate-source,它失败了,因为Maven无法解决模块间依赖性.在那种情况下,这是由@requiresDependencyResolutionantrun插件引起的.

由于antrun插件和依赖插件在Maven世界中非常流行,我相信我不是唯一遇到过这个问题的人.有人发现任何解决方案/解决方法吗

dependency-management maven multi-module

16
推荐指数
3
解决办法
1万
查看次数

运行使用maven构建的jar时,FlinkMLTools NoClassDef

我正在使用Apache Flink开发推荐系统.当我在IntelliJ中测试它时,实现正在运行,但我现在想要进入集群.我还构建了一个jar文件并在本地测试它,看看是否一切正常但我遇到了问题.

java.lang.NoClassDefFoundError:org/apache/flink/ml/common/FlinkMLTools $

我们可以看到,FlinkMLTools在运行jar时没有找到我的代码中使用的类.我使用Maven 3.3.3构建了这个jar,mvn clean install我正在使用Flink的0.9.0版本.

第一道

事实是我的全球项目包含其他项目(这个推荐人是子项目之一).这样,我必须mvn clean install在正确的项目的文件夹中启动,否则Maven总是构建一个其他项目的jar(我不明白为什么).所以我想知道是否有办法明确地说maven来构建一个全球项目的特定项目.实际上,也许路径FlinkMLTools包含在pom.xml全球项目文件中的链接中.

还有其他想法吗?

jar noclassdeffounderror maven apache-flink flinkml

4
推荐指数
1
解决办法
254
查看次数

定义模块列表,该列表应在Maven多项目构建中构建

我想使用Maven -pl选项来定义哪些特定模块应包含在reactor中.如果提供了模块路径列表,则该选项有效.不幸的是,提供模块的artifactIds根本不起作用.Sonatype'Maven:The Complete Reference'文档正在使用多项目示例,其中目录名称与artifactIds匹配:

http://books.sonatype.com/mvnref-book/reference/_using_advanced_reactor_options.html

是否可以在artifactId中使用-pl选项?

module build multi-project maven

3
推荐指数
2
解决办法
2038
查看次数