如何在Maven插件中动态构建编译类路径?

时间:2017-09-20 21:05:36

标签: maven maven-3 maven-plugin

我是一家软件产品公司的专业服务顾问。我们的产品提供Java API,因此可以构建字段自定义。这些扩展依赖于多达50个单独的JAR文件 - 一些是我们产品专有的,另一些是开源的。

我不想在POM中对依赖项进行硬编码有几个原因 - 主要是因为每个新版本都依赖于轻微不同版本的开源工件。发布新产品时,我只想指向新的安装文件夹并重建扩展名。

所以,我正在尝试创建一个Maven插件,它接受对安装文件夹的引用,通过文件夹进行递归,并自动将所有* .jar文件添加到编译时类路径中。

我试过了:

Map<?, ?> context = getPluginContext();
MavenProject maven = (MavenProject) context.get("project");
List<String> classpath = maven.getCompileClasspathElements();

// start adding additional elements to the classpath

该片段在初始化阶段执行,但类路径会在编译开始时恢复,编译失败。我是否正确地采取了这种方式?

1 个答案:

答案 0 :(得分:0)

这听起来不怎么样。

而是尝试分析安装文件夹的组装方式。尝试使用Maven创建此安装文件夹,并为POM提供所有使用的依赖项(BOM - 物料清单)。

然后在您的扩展程序中使用此BOM-POM作为依赖项(scope = provided)。