我正在使用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
答案 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。