问题标签 [maven-enforcer-plugin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
39419 浏览

java - 如何使用 Maven Enforcer 插件?

我想使用 Maven Enforcer 插件来检查我的路径上是否有重复的类。

我已经尝试过这里的示例。

但是当我这样运行它时:

mvn enforcer:enforce

我收到此错误:

无法在项目 datapopulator 上执行目标 org.apache.maven.plugins:maven-enforcer-plugin:1.0.1:enforce (default-cli):目标 org.apache.maven.plugins:maven-enforcer 的参数“规则” -plugin:1.0.1:enforce 丢失或无效

有没有办法正确使用它?

编辑#1

如果将我的配置更改为:

产生相同的错误。

0 投票
1 回答
1040 浏览

maven - 如何在当前 pom.xml 中获取 maven-enforcer-plugin 的依赖项版本?

我正在尝试编写一个 maven-enforcer 规则,用于检查该项目是否使用依赖管理。

但是我很难获得写在当前项目的 pom.xml 中的版本。我认为 DependencyNode#getPremanagedVersion() 会提供它,但看起来它返回的是由依赖项设置的版本(即 log4j 在 jbossall-client 中设置)。

如何在当前 pom.xml 中获取依赖项的版本?

0 投票
3 回答
1410 浏览

maven - Maven独特的快照和依赖收敛

我有一个项目,其中 maven-enforcer 规则因使用非唯一快照(令人讨厌的是 Maven 3 中支持的唯一一种快照)的多模块构建而失败。

例如,假设 -> 是“依赖”关系,并且:

  1. 模块-A -> 模块-B -> 模块-C
  2. 模块-A -> 模块-C

并且模块 B 和模块 C 作为唯一构建存在于快照存储库中。POM 中所有声明的模块版本当前都是 1.0-SNAPSHOT。

现在,构建模块 A 失败:

mvn -pl Module-A install

结果是:

传递依赖被解析为非唯一快照构建,但直接依赖被解析为唯一快照构建。

我正在使用 maven 3.0.3,maven-enforcer 1.0.1。存储库是使用唯一快照选项的 Artifactory 2.4.2(Artifactory 建议,因为 Maven 3 不再支持非唯一快照)。

解决方案?

更新:看起来工件允许覆盖 Maven 客户端行为并将非唯一快照存储在存储库中。但是,由于某种原因,Artifactory 不推荐这样做(请参阅http://wiki.jfrog.org/confluence/display/RTF/Local+Repositories上的“Maven 3”简介),因此仍然欢迎其他解决方案。

0 投票
1 回答
949 浏览

maven-3 - 具有自定义强制执行规则的 Maven3 配置文件,这可能吗?

我编写并测试了一个自定义执行器规则,以在各种 Linux 发行版上进行特定于发行版的构建。它使用mvn enforcer:enforce命令以及提供的pom.xml构建片段进行了很好的测试。

在绞尽脑汁并进行大量实验测试之后,我似乎找不到如何使用此自定义强制执行规则作为配置文件激活选择器。

配置文件激活使用了一些提示,maven-enforcer-rules详见配置文件简介页面的“我如何知道哪些配置文件在构建期间有效”部分下。即,具有多个字符串值(操作系统名称等)的每个配置文件激活都引用了相应的 maven 强制执行规则。但是,似乎在 pom.xml 中直接包含自定义配置文件激活器并不明显,添加此类可能需要 pom version update

Maven3 也可以以非常灵活的方式进行扩展,是否可以通过 Maven 扩展机制挂钩包含我的强制执行规则?有关于如何包含自定义生命周期参与者的文档;但是,我担心在构建开始时可能已经激活了配置文件。文档很少,但 javadoc 表明它AbstractMavenLifecycleParticipant.afterProjectsRead(MavenSession session)被称为“在MavenProject创建所有实例之后”。这让我怀疑它是否在配置文件激活之前或之后被调用。我怀疑之后,或者如何正确配置MavenProject

有人可以告诉我配置文件激活自定义是否甚至可以远程实现吗?

0 投票
1 回答
1025 浏览

java - 这是使用强制插件强制执行特定 Spring 版本的正确方法吗?

我希望使用maven-enforcer 插件bannedDependencies规则来强制执行特定的Spring 版本(3.1.2) 。

这是配置执行器插件以实现这一目标的正确方法吗?

以上似乎可行,并且mvn enforcer:enforce在命令行上突出显示 v3.1.0 或 org.springframework:spring-oxm 被作为传递依赖项引入。

似乎有人可能想要使用dependencyConvergence规则,但它突出了许多依赖错误,这些错误被maven自动排除为“冲突”。

这是一个包含更多上下文的片段:

0 投票
2 回答
7444 浏览

maven - 要求在子模块中定义 Maven 属性

我最近使用Maven Enforcer Plugin来强制所有 POM 定义一个foo.bar属性。我将此声明放在我的公司 POM 中,并假设它将适用于我的子项目。

令我沮丧的是(但并不意外),这条规则也在我的公司 POM 上强制执行。结果,我尽职尽责地定义了一个占位符foo.bar属性,并认为我已经完成了。

不幸的是,所有子项目都继承了这个属性,从而通过了强制测试。我无法确定孩子是明确定义了这个属性还是只是继承了一个无意义的值。任何人都可以提出一种方法:

  • 确保此(特定)规则不适用于我的公司 POM;或者

  • 确保我的占位符属性不被子项目继承;或者

  • 以另一种方式解决我的问题?

如果有帮助,我的实施者规则的定义如下所示。这个片段来自我公司的 POM。

我的目标是自动将此属性值用作 SCM 标记指令的一部分。我的公司 POM 中有以下片段,它为我的子项目定义了一个很好的标记方案:

0 投票
2 回答
36535 浏览

java - 解决Maven依赖收敛问题

我使用 maven-enforcer-plugin 来检查依赖收敛问题。典型的输出是:

看到这条消息,我通常会通过排除传递依赖来“解决”它,例如

我想了解这是否真的是一个修复以及以这种方式排除库所涉及的风险。照我看来:

  • 只要我选择使用较新的版本,“修复”通常是安全的。这依赖于库作者保持向后兼容性。

  • 通常对 Maven 构建没有影响(因为更接近的定义获胜),但是通过排除依赖项,我告诉 Maven 我知道这个问题,从而安抚了 maven-enforcer-plugin。

我的想法是否正确,是否有其他方法可以处理此问题?我对关注一般情况的答案很感兴趣——我意识到junit上面的例子有点奇怪。

0 投票
0 回答
1148 浏览

maven-3 - 如何在我的 maven pom 文件中防止 org.eclipse.m2e 生命周期映射?

我有一个 Maven 项目,我们通常使用 Eclipse 对其进行编辑。一些开发人员不断将有关 org.eclipse.m2e 生命周期映射插件的信息添加到我的 nice-and-clean pom.xml 的 pluginManagement 部分。我宁愿将它添加到 Eclipse 工作区中。

我想阻止这种情况并与之交谈是一种选择,但我更愿意将它与自动执行结合起来。

我使用“maven-enforcer-plugin”进行其他几项检查,它看起来是显而易见的去处。

我已经尝试过“禁止插件”规则,但该规则只对 build->plugins 部分做出反应,而不是 builds->pluginManagement->plugins

我还尝试了“评估 beanshell”,但无法弄清楚如何通过属性到达 pom 中的正确部分

如果现有规则已经支持它,我宁愿不编写自定义规则。

你们中有人知道怎么做吗?

0 投票
1 回答
1438 浏览

maven - 如何使 Maven 强制插件在指定阶段运行?

我想确保生成的 zip 文件的文件大小不大于 400 MB,所以我创建了这个规则:

但是,mvn 强制执行器默认绑定到validate阶段,不幸的是,此时该文件不存在。zip 文件由绑定到generate-resourcesmvn 阶段的 ant 任务生成。

问题

有什么方法可以让mvn 执行器运行generate-resources吗?或者换句话说,我如何验证构建后条件而不是前置条件?

0 投票
2 回答
5431 浏览

hibernate-validator - maven-enforcer-plugin 忽略问题

我正在尝试将 maven-enforcer-plugin 与收敛规则一起使用。我设法摆脱了除一个之外的所有问题。我们在我们的项目中使用 gwt 并且需要在客户端提供 hibernate-validator 4.1.0.Final 并提供范围。在服务器端,我们需要 hibernate-validator 4.2.0.Final,因为我们需要一些较新的功能。4.1.0.Final 依赖具有分类器来源。这样我就可以在一个 pom 中同时拥有两个版本。一切正常,但强制插件并不那么高兴并且失败了。

有什么办法可以配置插件来允许这个“问题”吗?

编辑:

问候,阿恩