我已阅读this中有关maven并行构建配置的内容。那我怎么能显示所有非线程安全的插件?是否有类似"插件 - 不安全列表"在maven中命令?
REM something like that to display all p[lugins without @threadSafe annotation
mvn help:plugin-not-safe-list
答案 0 :(得分:3)
现在,在构建Maven时会警告未标记为线程安全的插件:
[WARNING] *****************************************************************
[WARNING] * Your build is requesting parallel execution, but project *
[WARNING] * contains the following plugin(s) that have goals not marked *
[WARNING] * as @threadSafe to support parallel building. *
[WARNING] * While this /may/ work fine, please look for plugin updates *
[WARNING] * and/or request plugins be made thread-safe. *
[WARNING] * If reporting an issue, report it against the plugin in *
[WARNING] * question, not against maven-core *
[WARNING] *****************************************************************
[WARNING] The following plugins are not marked @threadSafe in Traderoot Maven Parent:
[WARNING] com.googlecode.maven-download-plugin:download-maven-plugin:1.3.0
[WARNING] Enable debug to see more precisely which goals are not marked @threadSafe.
[WARNING] *****************************************************************
答案 1 :(得分:0)
您可以为maven-enforcer-plugin编写自定义规则,并将其用于在您的maven项目上运行。
您可能还想使用mojo-executor来解析plugin.xml
文件以检查其"线程安全"属性。
详细说明何时以及为何使用上述内容。
当你在CI / CD环境中工作,并且想要通过maven使用并行编译时,你应该经常监视你的开发人员没有添加非线程安全的插件,以确保CI / CD的一致性和正确性。为了实现这一点,您可以使用上面提到的 maven-envorcer-plugin 和自定义规则。您的自定义规则可以使用Maven插件API(maven项目等)来搜索项目中的所有插件,然后使用 mojo-executor lib来读取{{1每个插件的属性(因为maven API没有提供)。 mojo-executor lib具有解析threadSafe
属性所在的maven插件的plugin.xml
文件的工具。
一旦找到,你可以通过maven构建失败。
如果只想查看非线程安全插件的列表,可以使用相同的技术,只列出threadSafe
属性为false的插件。
然后,您可以配置threadSafe
以使用自定义规则(例如,项目的配置文件),并在单个maven命令中通过命令行运行它。