Плагин 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.