【问题标题】:how to pass maven module classes to a maven plugin如何将 maven 模块类传递给 maven 插件
【发布时间】:2013-04-27 07:11:55
【问题描述】:

我开发了一个 maven 插件,它可以扫描模块中的类,以找到一些特定的类并对其进行处理。

问题是,当我在 maven 模块中使用这个插件时,它无法在该模块中找到类。

我检查了插件类路径,它只包含插件类,它是依赖项

有没有办法自动将模块类包含到插件类路径中?

【问题讨论】:

标签: maven maven-2 maven-3 maven-plugin


【解决方案1】:

我采用了这种方法,显然它正在发挥作用:

1 - 您的 Mojo 类中需要一个 MavenProject 参数:

@Parameter(defaultValue = "${project}", required = true, readonly = true)
private MavenProject project;

2 - 然后您可以从项目实例中获取类路径元素:

try {
    Set<URL> urls = new HashSet<>();
    List<String> elements = project.getTestClasspathElements();
                                  //getRuntimeClasspathElements()
                                  //getCompileClasspathElements()
                                  //getSystemClasspathElements()  
    for (String element : elements) {
        urls.add(new File(element).toURI().toURL());
    }

    ClassLoader contextClassLoader = URLClassLoader.newInstance(
            urls.toArray(new URL[0]),
            Thread.currentThread().getContextClassLoader());

    Thread.currentThread().setContextClassLoader(contextClassLoader);

} catch (DependencyResolutionRequiredException e) {
    throw new RuntimeException(e);
} catch (MalformedURLException e) {
    throw new RuntimeException(e);
}

【讨论】:

    猜你喜欢
    • 2012-05-11
    • 2016-11-20
    • 2022-01-06
    • 1970-01-01
    • 2011-05-28
    • 2019-05-23
    • 1970-01-01
    • 2012-10-28
    • 2021-10-03
    相关资源
    最近更新 更多