Проверьте значения по умолчанию и выражения Mojos, используя Maven Plugin Testing Harness: - PullRequest
6 голосов
/ 29 февраля 2012

У меня есть проблема с использованием Maven Plugin Testing Harness (2.0-alpha1): Когда я хочу протестировать мой Mojo, значения по умолчанию и выражения для параметров не применимы. У меня есть следующий параметр:

/**
 * <p>The output file to write the settings to.</p>
 *
 * @parameter default-value="${project.build.directory}/myProperties.properties" expression="${properties.file}"
 */

private String file;

Когда я запускаю свои модульные тесты, это свойство всегда равно null. Я попытался внедрить MavenProjectStub, который успешно возвращает ${project.build.directory}, но это не применяется к моему параметру Mojo.

Есть ли способ включить значения по умолчанию и выражения, такие как ${project.build.directory}, в мои Mojos во время тестов?

Ответы [ 4 ]

9 голосов
/ 21 сентября 2012

Так что похоже на они добавили lookupConfiguredMojo только для этого варианта использования .Мне потребовалось некоторое время, чтобы понять, как это назвать, потому что вам нужно правильно настроенный MavenProject, чтобы использовать его.Вот что сработало для меня:

File pomFile = ...

MavenExecutionRequest executionRequest = new DefaultMavenExecutionRequest();
ProjectBuildingRequest buildingRequest = executionRequest.getProjectBuildingRequest();
ProjectBuilder projectBuilder = this.lookup(ProjectBuilder.class);
MavenProject project = projectBuilder.build(pomFile, buildingRequest).getProject();

MyMojo mojo = (MyMojo) this.lookupConfiguredMojo(project, "my-goal");
...
6 голосов
/ 14 ноября 2015

При тестировании моего плагина я столкнулся с множеством проблем, в том числе и с этим. Каждая проблема занимала всего несколько строк, но найти их было непросто. Здесь помогли указатели!

Я объединил их в BetterAbstractMojoTestCase.java класс. Он содержит магические линии, которые решили полудюжинные проблемы, с которыми я столкнулся; и это дает lookupConfiguredMojo(File pom, String goal) метод для вашей проблемы здесь.

2 голосов
/ 16 апреля 2012

У меня была та же самая проблема, и я не мог найти никакого решения, поэтому я решил исправить это сам. Я проверил исходный код последней версии maven-plugin-testing-harness (сейчас это 2.0-alpha-1) и поместил его в свой собственный репозиторий github.

Вам нужно будет извлечь код оттуда и собрать его локально.

Единственное изменение, которое вам нужно внести в ваш проект, это заменить зависимость в вашем POM. Я использовал свое собственное имя домена / groupId вместо Apache, чтобы избежать конфликтов (и путаницы) с будущими выпусками Apache.

Это то, что вам нужно положить в свой POM:

<dependency>
    <groupId>com.menttis.maven.plugin-testing</groupId>
    <artifactId>maven-plugin-testing-harness</artifactId>
    <version>2.0.1</version>
    <scope>test</scope>
</dependency>

И это хранилище, где вы можете получить код из: https://github.com/grighetto/maven-plugin-testing-harness

0 голосов
/ 11 июля 2017

Для версии 3 +:

    <dependency>
        <groupId>org.apache.maven.plugin-tools</groupId>
        <artifactId>maven-plugin-annotations</artifactId>
        <version>3.5</version>
        <scope>provided</scope>
    </dependency>

провел некоторое время в замешательстве по этому поводу, прежде чем понял, что я смешивал синтаксис аннотации с синтаксисом javadoc.

@Parameter(property = "project.build.directory")
private String projectBuildDir;

Затем объедините имя файла с этим значением, чтобы завершить путь в вашем коде.

...