我试图(递归地)提取项目中使用的所有依赖项的信息。看来MavenProject类提供了我需要的所有信息。但我不知道如何将的实例Artifact
转换为的实例MavenProject
/**
*
*
* @reqiresDependencyResolution
*
*/
@Mojo(name = "license-overview", defaultPhase = LifecyclePhase.PROCESS_SOURCES)
public class MyMojo extends AbstractMojo {
/**
* @parameter default-value="${project}"
* @required
* @readonly
*/
MavenProject project;
public void execute() throws MojoExecutionException {
Set<Artifact> artifacts= project.getArtifacts();
for (Artifact artifact : artifacts) {
//Here I need to access the artifact's name, license, author, etc.
System.out.println("*** "+artifact.getArtifactId()+"***");
}
}
}
如何访问位于我的依赖项pom中但未通过Artifact
s getter 导出的信息?
是的,这是可能的。
我们可以使用ProjectBuilder
API 在内存中构建项目:
建立项目的内存描述。
通过build(projectArtifact, request)
使用我们感兴趣的工件和一个ProjectBuildingRequest
(拥有各种参数,例如远程/本地存储库的位置等)调用该方法,这将建立一个MavenProject
内存中。
考虑下面的MOJO,它将打印所有依赖项的名称:
@Mojo(name = "foo", requiresDependencyResolution = ResolutionScope.RUNTIME)
public class MyMojo extends AbstractMojo {
@Parameter(defaultValue = "${project}", readonly = true, required = true)
private MavenProject project;
@Parameter(defaultValue = "${session}", readonly = true, required = true)
private MavenSession session;
@Component
private ProjectBuilder projectBuilder;
public void execute() throws MojoExecutionException, MojoFailureException {
ProjectBuildingRequest buildingRequest = new DefaultProjectBuildingRequest(session.getProjectBuildingRequest());
try {
for (Artifact artifact : project.getArtifacts()) {
buildingRequest.setProject(null);
MavenProject mavenProject = projectBuilder.build(artifact, buildingRequest).getProject();
System.out.println(mavenProject.getName());
}
} catch (ProjectBuildingException e) {
throw new MojoExecutionException("Error while building project", e);
}
}
}
这里有几个主要成分:
requiresDependencyResolution
告诉Maven,我们需要在执行前必须解决的依赖关系。在这种情况下,我将其指定为,RUNTIME
以便解决所有编译和运行时依赖项。您当然可以将其设置为ResolutionScope
。你要。@Component
注解。null
,否则将不会发生任何事情。有权使用时MavenProject
,您可以打印所需的所有信息,例如开发人员等。
如果要打印依赖项(直接和传递),则还需要setResolveDependencies(true)
在构建请求上调用,否则,将不会在构建项目中填充它们。
我正在尝试创建插件,当有人打开箱子时,它会检查箱子的位置是否与我的config.yml中的任何位置不匹配。所以我想这样做: 编辑:现在我有了这段代码: 但是当我右键点击箱子时,消息jeej没有出现,所有出现的东西都是消息Hodnota x je 0。但是我的配置中有几个键,x在任何地方都不是0。在控制台中,会出现此错误:
我一直在尝试为 Java 工件的部署任务配置 Jenkins 作业。我希望用户能够选择要部署的工件版本,这些版本存储在Nexus存储库中。为此,我正在使用Maven元数据插件从存储库中获取工件版本列表。 问题是,由于java.net.UnknownHostException,Jenkins服务器无法解析存储库基本URL(https://nexus.repos.prod.com/nexus/cont
我的问题是:根据这些参数,我可以在哪里归档标准maven插件的API fefinition?
我是maven的新手,我已经用pom文件编写了自己的maven插件 然后,在我的IDE(intellij)中,我使用clean install安装maven插件 扎克
问题内容: Q1) 在我的reactjs应用程序中,我正在尝试从后端Nodejs服务器获取API。API会根据请求响应图像文件。 我可以在http://192.168.22.124:3000/source/592018124023PM-pexels- photo.jpg 上访问并查看图像文件 但是在我的reactjs客户端上,我在控制台日志上收到此错误。 未捕获(承诺)SyntaxError:意外
主要内容:如下表所示,Maven 提供了如下 2 种类型的插件。,插件目标,插件绑定Maven 实际上是一个依赖插件执行的框架,它执行的每个任务实际上都由插件完成的。Maven 的核心发布包中并不包含任何 Maven 插件,它们以独立构件的形式存在, 只有在 Maven 需要使用某个插件时,才会去仓库中下载。 如下表所示,Maven 提供了如下 2 种类型的插件。 插件类型 描述 Build plugins 在项目构建过程中执行,在 pom.xml 中的 build 元素中配置