首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用maven plugin MOJO检索模块的依赖项列表

使用maven plugin MOJO检索模块的依赖项列表
EN

Stack Overflow用户
提问于 2015-05-18 17:03:12
回答 1查看 1.2K关注 0票数 0

我正在开发一个使用javassist的maven插件。为了加载应该使用javassist操作的类,我必须手动设置类路径:

代码语言:javascript
复制
classPool.appendClassPath("/path/to/the/file.jar");

有没有办法检索运行maven插件的当前模块的所有依赖项列表?由于您可以使用<dependencies/>元素指定插件在其中运行的模块的依赖关系,因此应该有某种方法可以在我的MOJO中检索它们。

示例:假设我的插件定义在下面的pom.xml中:

代码语言:javascript
复制
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>my-group-id</groupId>
        <artifactId>my-parent-artifact-id</artifactId>
        <version>0.4.1-SNAPSHOT</version>
    </parent>
    <artifactId>my-artifact-id</artifactId>

    <dependencies>
        <dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-math3</artifactId>
                <version>3.4</version>
            </dependency>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>my-group-id</groupId>
                <artifactId>my-maven-plugin</artifactId>
                <version>${project.version}</version>
                ...
            </plugin>
        </plugins>
    </build>
</project>

现在,在我的my-maven-plugin MOJO中,我想检索在模块的<dependencies/>部分中声明的工件commons-math3的文件位置。通常,我还希望从父模块和它们的所有传递依赖项中检索<dependencies/>

EN

回答 1

Stack Overflow用户

发布于 2015-05-18 21:48:26

与此同时,我自己找到了解决方案:

代码语言:javascript
复制
/**
 * @goal cmp
 * @phase verify
 */
public class JApiCmpMojo extends AbstractMojo {
    /**
     * @parameter default-value="${project}"
     */
    private org.apache.maven.project.MavenProject mavenProject;
    ...
    private void setUpClassPathUsingMavenProject(JarArchiveComparatorOptions comparatorOptions) throws MojoFailureException {
        notNull(mavenProject, "Maven parameter mavenProject should be provided by maven container.");
        Set<Artifact> dependencyArtifacts = mavenProject.getDependencyArtifacts();
        for (Artifact artifact : dependencyArtifacts) {
            ...
        }
    }
}

从容器获得的MavenProject实例具有方法getDependencyArtifacts()。这个集合中的每个工件都有一个返回java.io.File对象的方法getFile()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30299002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档