Я использую свойство -Dgoal плагина архетипа Maven.В этом свойстве вы можете указать дополнительные цели для немедленного запуска в проекте, созданном из архетипа.
Итак, я создаю новый подключаемый модуль maven в своем проекте архетипа maven, и этот модуль содержит всю дополнительную Java-логику, которую я хочубыть выполненным.Мне не нужно указывать этот плагин во вновь созданном pom.xml сгенерированного проекта.
Подробнее: вот pom.xml maven-plugin:
<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>
<groupId>yourGroupId</groupId>
<artifactId>init-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>maven-plugin</packaging>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.0.4</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>3.0-alpha-2</version>
</dependency>
</dependencies>
А вот Mojo:
/**
* @goal maven-plugin-init
*/
public class InitMojo extends AbstractMojo
{
/**
* @parameter expression="${project.basedir}"
*/
private File basedir;
public void execute() throws MojoExecutionException, MojoFailureException
{
//write initialization logic here
}
}
Итак, в "basedir" будет baseir только что созданного проекта.
Единственная проблема заключается в том, как передать входные параметры нашегоархетип к нашему плагину инициализации.Я просто создаю с помощью архетипа файл «initial.properties» в корне вновь созданного проекта и сохраняю там все входные параметры.А затем прочитайте этот файл в плагине инициализации.
Чтобы запустить свой архетип, используйте следующую команду: mvn archetype:generate $archetype_properties -Dgoals=yourGroupId:init-maven-plugin:maven-plugin-init