Как сохранить структуру maven при создании исходного файла

Я использую maven-source-plugin для упаковки исходников проекта. Обычно вы получаете все из main/java и main/resources, упакованных вместе в один корень.

Я хочу сохранить структуру проекта в финальном -source.jar - например, src/main/java/**, src/main/resources/**, а также в тестовой части.

Я попробовал конфигурацию includes, которая не помогла.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>2.3</version>
    <executions>
        <execution>
        <id>attach-sources</id>
        <goals>
            <goal>jar-no-fork</goal>
        </goals>
            <configuration>
                <includes>src/main/**, src/resources/**</includes>
            </configuration>
        </execution>
    </executions>
</plugin>

Ошибка, которую я получаю,

[INFO] Failed to configure plugin parameters for: org.apache.maven.plugins:maven-source-plugin:2.3

(found static expression: 'src/main/**, src/resources/**' which may act as a default value).

Cause: Cannot assign configuration entry 'includes' to 'class [Ljava.lang.String;' from 'src/main/**, src/resources/**', which is of type class java.lang.String

Это действительно ошибка «найдено статическое выражение» или конфигурация неверна? Или есть другой способ добиться этого?


Редактировать

Так что при смене POM как в подсказке от @carlspring ошибка ушла, но результат в том, что в полученном sources.jar нет ни исходников, ни ресурсных файлов

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>2.3</version>
    <executions>
        <execution>
            <id>attach-sources</id>
            <goals>
                <goal>jar-no-fork</goal>
            </goals>
            <configuration>
        <includes>
        <include>src/main/**</include>
        <include>src/test/**</include>
        </includes>
            </configuration>
        </execution>
    </executions>
</plugin>

Возможно, подсказка содержится в описании опции includes:

Список файлов для включения. Задается как шаблоны набора файлов, относящиеся к входному каталогу, содержимое которого упаковывается в JAR.

Это означает, что если входным каталогом для jar-no-fork является src/main/java|resources, то на мой вопрос нужно ответить НИКАК


person VeikkoW    schedule 17.09.2014    source источник
comment
Вы пытались построить без <includes>...</includes> ?   -  person khmarbaise    schedule 17.09.2014
comment
Конечно, я сделал, но результат такой, какой я не хочу, ресурсы и код параллельно не разделены.   -  person VeikkoW    schedule 17.09.2014


Ответы (1)


Вы используете <includes/> неправильно. Это не список, разделенный запятыми. Каждая запись должна быть определена как собственная <include/>. Попробуйте это так:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>2.3</version>
    <executions>
        <execution>
        <id>attach-sources</id>
        <goals>
            <goal>jar-no-fork</goal>
        </goals>
            <configuration>
                <includes>
                    <include>src/main/**</include>
                    <include>src/resources/**</include>
                </includes>
            </configuration>
        </execution>
    </executions>
</plugin>

Кроме того, я бы рекомендовал вам вместо этого использовать maven-assembly-plugin и создавать исходники с его помощью, так как, на мой взгляд, это было бы намного проще. Посмотрите здесь.

person carlspring    schedule 17.09.2014
comment
Хотя этот ответ полезен в отношении неправильного формата включения, он не помогает с конкретным вопросом. Результаты с использованием параметров включения таковы, что в сгенерированном sources.jar нет исходных файлов, только POM и META.INF. - person VeikkoW; 17.09.2014