如何在创建source-jar时保持maven结构

时间:2014-09-17 07:46:21

标签: maven maven-source-plugin

我正在使用maven-source-plugin来打包项目的源代码。 通常,您可以将main / java和main / resources打包到一个根目录中。

我想要的是将项目结构保留在最终的-source.jar中 - 例如src/main/java/**src/main/resources/**和测试部分。

我尝试了包含配置但没有帮助

<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

真的是&#34;找到了静态表达式&#34;错误或配置不正确? 或者还有另一种方法来实现这一目标吗?


修改

因此,当从@carlspring的提示中更改POM时,错误消失了,但结果是源文件和资源文件都不在结果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,那么我的问题必须回答 NO WAY

1 个答案:

答案 0 :(得分:3)

您错误地使用了<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代替并使用它创建源代码,因为在我看来这会更容易。看看here