Maven 플러그인을 작성 중이며 특정 종속성을 자동으로 해결하고 플러그인에 지정된 매개 변수를 기반으로 프로젝트에 종속성으로 추가하려고합니다.프로그래밍 방식으로 MavenProject에 Artifact를 추가 할 수 있습니까?
aether을 통해 종속성을 성공적으로 해결할 수 있었지만 aether와 MavenProject 사이의 연결이 끊어지는 것 같습니다.
내가 사용하고자하는 MavenProject # addAttachedArtifact에 대한 메소드가 있습니다. 그러나, aether로부터 검색된 것은 org.sonatype.aether.artifact.Artifact 인 반면, org.apache.maven.artifact.Artifact를 취합니다. 나는 두 가지 사이의 변환 방법을 가지고있는 plugin을 발견했지만, 좀 더 표준적인 접근 방식이되어야한다고 생각합니다.
또한 DefaultArtifactFactory를 사용하여 org.apache.maven.artifact.Artifact를 만들었지 만 ArtifactHandler를 가져 오려고 할 때 NullPointerException이 발생했습니다.
코드 :
DefaultArtifactFactory factory = new DefaultArtifactFactory();
Artifact mavenArtifact = factory.createBuildArtifact("com.beust", "jcommander", "1.27", "jar");
결과 :
Caused by: java.lang.NullPointerException
at org.apache.maven.artifact.factory.DefaultArtifactFactory.createArtifact(DefaultArtifactFactory.java:155)
at org.apache.maven.artifact.factory.DefaultArtifactFactory.createArtifact(DefaultArtifactFactory.java:117)
at org.apache.maven.artifact.factory.DefaultArtifactFactory.createArtifact(DefaultArtifactFactory.java:111)
at org.apache.maven.artifact.factory.DefaultArtifactFactory.createBuildArtifact(DefaultArtifactFactory.java:75)
at com.foo.bar.module.IncludeModuleFrontEndMojo.execute(IncludeModuleFrontEndMojo.java:165)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
... 20 more
그래서 정말, 이런 내가, 이러한 문제의 해결이 좋을 것 시도한 것들,하지만 난 ' 정말 후 방법이. 어떤 아이디어? UPDATE
내가 두 클래스 사이에 내 자신의 변환 방법 작성 :
private static org.apache.maven.artifact.Artifact aetherToMavenArtifactBasic(Artifact artifact, String scope, ArtifactHandler artifactHandler) {
DefaultArtifact mavenArtifact = new DefaultArtifact(artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), scope, artifact.getExtension(), artifact.getClassifier(), artifactHandler);
mavenArtifact.setFile(artifact.getFile());
mavenArtifact.setResolved(true);
return mavenArtifact;
}
을하고 MavenProject # addAttachedArtifact 방법은 기존의 유물로 이슈를 부착하는 것을 발견 (즉, 소스를 첨부/javadocs jars를 artifact로 옮긴다.) 이것은 내 목표가 아니다. 대신 내가 받는다는 프로젝트에서 아티팩트를 가지고 내 유물을 추가합니다. (I 프로젝트의 getArtifactMap를 (호출 할 때 내 유물이 다음 표시) 및 getCompileClasspathElements()하지만,이 프로젝트에 내 유물을 추가
project.getArtifacts().add(mavenArtifact);
.. 질문으로 발전했습니다 그래서 지속되지 않는 변경이 내가 정말 걱정하는 문제는 다음과 같습니다?
내가 MavenProject을 변경하고 계속 가질 수
이미 존재하는 경우 알고 계시겠습니까? :). 내가 명확하게 제목을 업데이 트했습니다. 나는 프로그램 적으로 종속성을 추가하려고한다. – Noremac