Собственный плагин maven с вложенными сложными объектами и значениями по умолчанию
Разрабатывая некоторые из моих плагинов Maven, я натолкнулся на идею более структурированного способа предоставления конфигураций, но я не уверен, что есть способ, который работает.
Возможно ли иметь MOJO, который имеет экземпляры из BaseSettings
а также MavenSettings
используется таким образом, или я вынужден "засунуть" эти поля непосредственно в мои MOJO?
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugins.annotations.Parameter;
public abstract class SomeSpecialAbstractMojo extends AbstractMojo{
@Parameter
protected BaseSettings baseSettings = new BaseSettings();
@Parameter
protected MavenSettings mavenSettings = new MavenSettings();
}
-
import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectHelper;
public class MavenSettings {
@Parameter(name = "project", property = "project", readonly = true, required = true)
protected MavenProject project;
@Component
protected MavenProjectHelper projectHelper;
}
-
import org.apache.maven.plugins.annotations.Parameter;
public class BaseSettings {
@Parameter(name = "skip", defaultValue = "false")
protected boolean skip = false;
@Parameter(name="verbose", defaultValue = "true")
protected boolean verbose = true;
}
Идея заключалась в том, чтобы объединить некоторые общие свойства в свое собственное "пространство", что делает мои MOJO меньше и мой код более структурированным.
РЕДАКТИРОВАТЬ: Я хочу иметь такой вид конфигурации исполнения:
<configuration>
<baseSettings>
<verbose>true</verbose>
</baseSettings>
<!-- mavenSettings is omitted, I want to "auto-use-default" here -->
<otherComplexSettings>
<complexValue1>value1</complexValue1>
</otherComplexSettings>
</configuration>
<executions>
<execution>
<id>goal1-call</id>
<goals>
<goal>mojo1</goal>
</goals>
<configuration>
<otherComplexSettings>
<complexValue1>override-value1</complexValue1>
</otherComplexSettings>
</configuration>
</execution>
<execution>
<id>goal2-call</id>
<goals>
<goal>mojo2</goal>
</goals>
<configuration>
<!-- only part of mojo2 -->
<anotherComplexSettings>
<complexValue3>value3</complexValue3>
</anotherComplexSettings>
</configuration>
</execution>
<execution>
<id>goal3-call</id>
<goals>
<goal>mojo3</goal>
</goals>
<configuration>
<otherComplexSettings>
<complexValue1>override-value012</complexValue1>
</otherComplexSettings>
</configuration>
</execution>
<execution>
<id>goal4-call</id>
<goals>
<goal>mojo4</goal>
</goals>
</execution>
</executions>
0 ответов
Не уверен, что это ответ на ваш вопрос, но вы можете использовать свои собственные POJO в качестве параметров. Вот пример. Вы также можете использовать свойства или карты.