Плагин maven sources включает в себя конфигурацию

У меня есть проект Maven с нестандартной конфигурацией:

$> tree                                                                                          
.
├── pom.xml
├── symbolic-link-to-sources -> ../src
└── target
    ├── maven-archiver
    │   └── pom.properties
    ├── project-1.0-SNAPSHOT-sources.jar
    ├── project-1.0-SNAPSHOT.jar
    └── surefire

Я пытаюсь сгенерировать исходный файл этого maven-модуля, чьи источники находятся в../src. Я создал символическую ссылку на../src на тот случай, если плагин не принимает родительские папки в путях. Для этого я использую исходный плагин maven, настроенный так:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-source-plugin</artifactId>
  <version>2.2.1</version>
  <configuration>
    <includePom>true</includePom>
    <includes>
      <include>symbolic-link-to-sources/**</include>
    </includes>
  </configuration>
</plugin>

Я запускаю этот плагин с mvn source:jar, К сожалению, я получаю только pom.xml в моем исходном фляге. Если я установил для includePom значение false, плагин не создает исходный архив.

Я перепробовал много вещей, как <include>: ../src, ../src/**, ../**, symbolic-link-to-sources, symbolic-link-to-sources/**, ../**/*.java Никто из них не доставил мне мои источники в банку моих источников. Хотя в документации об этом сказано, что это относительный шаблон набора файлов.

Любая идея, как получить содержимое файлов Java из папки../src в мой исходный файл?

(Да, моя символическая ссылка не повреждена, нет, нет способа переставить мои модули, чтобы иметь стандартную иерархию папок, это проект-оболочка вокруг проекта на основе муравья).

1 ответ

Вы бы использовали <includes свойство для указания файлов / шаблонов для включения в исходную папку.

Вы установили <sourceDirectory> к правильному расположению источника (символическая ссылка и т. д.)? Если да, можете ли вы опустить всю конфигурацию плагина выше и просто запустить mvn source:jar на пом? Он должен генерировать источники правильно.

Застрял с той же проблемой и после поиска в Google и попытка, наконец, пришел к этому:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>build-helper-maven-plugin</artifactId>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>add-source</goal>
      </goals>
      <configuration>
        <sources>
          <source>../common/src/main/java</source>
        </sources>
      </configuration>
    </execution>
  </executions>
</plugin>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-source-plugin</artifactId>
  <executions>
    <execution>
      <id>attach-sources</id>
      <goals>
        <goal>jar</goal>
      </goals>
    </execution>
  </executions>
</plugin>

Где "../common/src/main/java" - это путь к источникам, которые связаны как символическая ссылка в текущем проекте.

Обратите внимание, что build-helper-maven-plugin имеет фазу пакета. При использовании фазы generate-sources я получал "дублированный класс", поскольку те же источники были добавлены из символической ссылки dir и из dir, настроенного в build-helper-maven-plugin.

Другие вопросы по тегам