Я публикую это как ответ, но это не было бы моим первым выбором;надеясь, что у кого-то будет что-то лучше. Я действительно надеялся, что есть собственный способ Maven сделать [что-то вроде] этого.
По сути, я создал небольшой плагин для распечатки информации.
Пом:
<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/maven-v4_0_0.xsd">
<groupId>foo.bar.baz.demo</groupId>
<version>1.2.3-SNAPSHOT</version>
<artifactId>test_plugin</artifactId>
<packaging>maven-plugin</packaging>
<modelVersion>4.0.0</modelVersion>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>3.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>2.2.1</version>
</dependency>
</dependencies>
</project>
Код:
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.project.MavenProject;
@Mojo(name = "print_pom_dir")
public class TestMojo extends AbstractMojo {
public void execute() throws MojoExecutionException {
MavenProject object = (MavenProject) this.getPluginContext()
.get("project");
getLog().info(
"Pom directory: " + object.getBasedir().getAbsolutePath());
}
}
Где я могу поместить выполнение сборки в родительский объект, например:
<build>
<plugins>
<plugin>
<groupId>foo.bar.baz.demo</groupId>
<version>1.2.3-SNAPSHOT</version>
<artifactId>test_plugin</artifactId>
</plugin>
</plugins>
</plugins>
Таким образом, все дочерние модули наследуют его.
Тогда все, что мне нужно сделать, это запустить mvn foo.bar.baz.demo:test_plugin:1.2.3-SNAPSHOT:print_pom_dir
из корневого модуля, и stdout получает мои данные для моего регулярного выражения.
Интересно, может быть, запись в файл или что-то в целевой области может быть чище? , но я не слишком ясно представляю лучшие практики для Maven и то, является ли стандартным изменение целевого каталога для чего-либо, не связанного со сборкой, или как получить root, чтобы узнать о выводе всех дочерних исполнений плагина дляэто важно.