Инициализация сложных параметров плагина Maven через системные свойства - PullRequest
1 голос
/ 29 ноября 2011

Мне нужно запустить плагин Maven из консоли. В плагине мне нужен комплексный вид параметров:

/**
* @goal do-automation
**/
public class AutomationMojo extends AbstractMojo {

/**
 * The current maven project.
 *
 * @parameter expression="${project}"
 */
protected MavenProject project;

/**
 * App configuration.
 *
 * @parameter expression="${appConfig}"
 */
private AppConfig appConfig;

Параметр AppConfig выглядит следующим образом:

public class AppConfig {

private String path

private String version

}

Я буду запускать плагин maven следующим образом:

mvn группа: артефакт: версия: do-Automation -Dproperty.for.appConfig

Как я могу установить свойства AppConfig через системные свойства? Это возможно?

Я попробовал следующее, и у меня это не сработало:

public class AppConfig {
/**
* @parameter expression="${path}"
*/
private String path

private String version

}

mvn группа: артефакт: 1.0-SNAPSHOT: сделать автоматизацию -DappConfig.path = 122 -Dpath = 122 Он создал AppConfig с нулевыми значениями для свойств

Я использую: Apache Maven 2.2.1 (r801777; 2009-08-06 14: 46: 01-0430) Версия Java: 1.6.0_21 Java home: c: \ Program Files \ Java \ jdk1.6.0_21 \ jre Локаль по умолчанию: en_US, кодировка платформы: Cp1252 Название ОС: «Windows 7» версия: «6.1» arch: «x86» Семейство: «Windows»

Ответы [ 3 ]

2 голосов
/ 24 июня 2013

На самом деле Maven 3 предоставляет некоторые другие способы делать то, что вы хотите.Пожалуйста, посмотрите на эту ссылку, раздел (Свойства Бина по умолчанию)

http://blog.sonatype.com/people/2011/03/configuring-plugin-goals-in-maven-3/

Вы можете определить метод set (String configStr) в вашем AppConfig и проанализировать строку, переданную из командной строки.Для экземпляра.

mvn group:artifact:1.0-SNAPSHOT:do-automation -DappConfig=my/path,version

Тогда вы сможете соответствующим образом проанализировать «my / path, version» в методе set (...).

1 голос
/ 29 ноября 2011

вы уже прочитали это уже. Вот выдержка:

configuration @parameter expression = "$ {aSystemProperty}" по умолчанию-значение = "$ {anExpression}"

Указывает выражения, используемые для вычисления значения, которое будет введено в этот параметр Mojo во время сборки. Выражение, данное Значение по умолчанию обычно используется для ссылки на конкретные элементы в POM, например, $ {project.resources}, который ссылается на список ресурсы, предназначенные для сопровождения классов в результирующем файле JAR. из Конечно, значение по умолчанию не обязательно должно быть выражением, но также может быть простая константа, как истина или 1,5. И для параметров типа String можно смешивать выражения с буквальными значениями, например, $ {Project.artifactId} - $ {project.version} -special. Системное свойство данное выражение позволяет пользователям переопределить значение по умолчанию из командная строка через -DaSystemProperty = значение. ПРИМЕЧАНИЕ. Если ни значение по умолчанию, ни выражение не указаны, параметр может быть только настроен из POM. Использование '$ {' и '}' необходимо для ограничить фактические выражения, которые могут быть оценены.

0 голосов
/ 29 ноября 2011

вы должны изменить свою конфигурацию следующим образом:

/**
 * App configuration.
 *
 * @parameter
 */
private AppConfig appConfig;


public class AppConfig {
/**
* @parameter expression="${appConfig.path}"
*/
private String path

/**
* @parameter expression="${appConfig.version}*/
private String version

}

Это должно дать возможность использовать аргументы конфигурации вашей системы. Сначала я бы проверил, работает ли конфигурация с помощью обычного тега конфигурации для плагина, как ожидалось, чтобы увидеть, если что-то не так.

...