我正在尝试使用Maven 2.2.1和maven-release-plugin 2.0-beta-9发布一个Web项目,但在执行发布时总是失败:执行为EAR项目生成源jar,这使得因为EAR项目没有任何来源。
[INFO] [INFO] [source:jar {execution: attach-sources}]
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [ERROR] BUILD ERROR
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [INFO] Error creating source archive: You must set at least one file.
为了尝试为EAR项目禁用源JAR的构建,我将以下内容添加到我的EAR项目的POM中(发布插件的版本在父POM中设置):
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<useReleaseProfile>false</useReleaseProfile>
</configuration>
</plugin>
</plugins>
</build>
在检查此更改后再次运行发布时,我在为EAR项目生成源JAR时遇到了相同的错误,即使这应该已被先前的POM代码段禁用。
我做错了什么?为什么源JAR仍在构建?
修改: 我试图让源插件包含我的application.xml文件,以便通过添加以下POM片段不会发生此错误:
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<configuration>
<includes>
<include>${basedir}/META-INF/**/*</include>
</includes>
<useDefaultExcludes>false</useDefaultExcludes>
</configuration>
</plugin>
</plugins>
</build>
不幸的是,这也无法解决问题。
答案 0 :(得分:2)
我终于明白了。我需要添加我的源文件作为引用的一部分:
<resources>
<resource>
<directory>${project.basedir}</directory>
<includes>
<include>META-INF/**/*</include>
</includes>
<excludes>
<exclude>target/**/*</exclude>
<exclude>bin/**/*</exclude>
<exclude>META-INF/.svn/**/*</exclude>
</excludes>
</resource>
</resources>
这样做可以让一切恢复正常。我不需要任何特殊的发布或源代码配置来使它工作。
答案 1 :(得分:0)
maven-source-plugin 2.1版中存在一个错误,导致出现与此处描述的错误相同的错误。较新版本&gt; = 2.1.1包含修复程序。以下是此Bug的链接以获取更多信息。 http://jira.codehaus.org/browse/MSOURCES-44