我想我错过了什么..
我想发布我的项目。
我在我的pom中添加了maven-release-plugin。另外,除了java之外我还有另一个源代码dir(称之为gen-src)。当我在maven发布的第一步(即准备)时,一切都还可以,但是当我做执行时,它不会考虑gen-src。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>src/main/gen_src</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
我怀疑它可能与相位是生成源的事实有关。我是否需要将添加源目标附加到另一个阶段?如果是,怎么样?
我也读了here - 这是类似的问题,虽然我不使用flex..no回答。
有什么想法吗?
谢谢。
答案 0 :(得分:1)
我过去遇到同样的问题,我想我知道发生了什么。发布:执行阶段签出,将要发布到'target / checkout'文件夹的标签副本,并派出maven进程来构建此结帐。由于你只在release:perform阶段遇到问题,它必须与maven在'target / checkout'文件夹而不是'./'文件夹中运行fork进程这一事实有关。
我最终解决了这个问题,删除了构建帮助程序,但我不知道你是否可以这样做,所以如果我是你,我会尝试避免配置上的相对路径。您可以像这样配置build-helper:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${basedir}/src/main/gen_src</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
明确定义$ {basedir}可以避免这个问题,因为$ {basedir}将解析为fork路径(your_workspace / project / target / checkout)而不是当前路径(your_workspace / project)。如果这不能解决问题,我相信我们应该针对build-helper-maven-plugin提交一个错误,因为只有在执行阶段才会出现错误。
答案 1 :(得分:0)
生成的源类不会进入二进制jar - 你只能找到编译常规和生成源的.class文件。但是,Maven release插件会在源jar中包含额外的源目录。
无需在任何其他阶段执行“add-source”目标;你可以发现有用的是让干净的插件知道它应该包含额外的目录:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<filesets>
<fileset>
<directory>${basedir}/src/main/gen_src</directory>
<includes>
<include>**/*</include>
</includes>
</fileset>
</filesets>
</configuration>
</plugin>