Позвольте мне ответить на этот заводной стиль .... (используя сценарий, написанный для GMaven)
Я буду использовать в качестве примера Javascript зависимостей, предоставляемые webjars.org, в котором я хочу, чтобы прочитать (несчастливо по желанию , как я только что обнаружил) requirejs
.
/**
* Read the requirejs property in pom (if possible) or in file (if not available in pom)
* @param log the logger injected into the groovy script
* @param project the MavenProject object (well, not really, but anyway a good implementor)
* @param session the MavenSession
* @param artifact the artifact in which we want to read the requirejs property
*/
def readRequireJSPropertyOf(def log, def project, def session, def artifact) {
// This is the hardest part : the session gives access (through MavenSession#getContainer()) to the PlexusContainer, which allows lookup of various components
MavenProjectBuilder projectBuilder = session.container.lookup(MavenProjectBuilder.class);
// Now we have a MavenProjectBuilder, just build a MavenProject object
MavenProject artifactProject = projectBuilder.buildFromRepository(artifact, project.remoteArtifactRepositories, session.localRepository);
log.debug "loaded project ${artifactProject}. Now reading its requirejs property"
// And read that property from artifact POM
def requireValue = artifactProject.properties["requirejs"];
return requireValue
}
Опять же, я не могу не подчеркнуть того, как доступ к PlexusContainer
спас день, кроме знания о том, что MavenProjectBuilder
компонент где-то существует. Обратите внимание, что этот компонент устарел и доступен через артефакт maven-compat.
Вы пишете плагин или чего вы пытаетесь достичь? – khmarbaise
Да. поэтому у него есть тег maven-plugin – Hilikus
Я отредактировал вопрос, чтобы сделать это ясно – Hilikus