5


我想我错过了一些东西。
我想发布我的项目。
我将 maven-release-plugin 添加到我的 pom.xml 中。此外,除了 java 之外,我还有另一个源代码目录(称为 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>

我怀疑它可能与相位是生成源的事实有关。我需要将添加源目标附加到另一个阶段吗?如果是,如何?
我也在这里读到- 这是类似的问题,虽然我没有使用 flex..no answer。任何想法?
谢谢。

4

2 回答 2

1

我过去也遇到过同样的问题,我想我知道发生了什么。release:perform 阶段检出要发布到“target/checkout”文件夹的标签副本,并派生一个 maven 进程来构建此检出。由于您仅在 release:perform 阶段遇到问题,因此它必须与 maven 在“target/checkout”文件夹而不是“./”文件夹中运行 fork 进程的事实有关。

我最终解决了这个问题,删除了构建助手,但我不知道你是否可以这样做,所以如果我是你,我会尝试避免配置上的相对路径。您可以像这样配置构建助手:

<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} 将解析为分支路径 (your_workspace/project/target/checkout) 而不是当前路径 (your_workspace/project)。如果这不能解决问题,我相信我们应该针对 build-helper-maven-plugin 提交一个错误,因为只有在执行阶段才应该没有错误。

于 2011-12-26T14:38:46.597 回答
0

生成的源类不会进入二进制 jar - 在那里您只会找到由常规和生成的源编译产生的 .class 文件。但是,Maven 发布插件会将额外的源目录包含到源 jar 中。

无需在任何其他阶段执行“添加源”目标;你会发现有用的是让 clean 插件知道它应该包含额外的目录:

<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>
于 2011-09-02T08:33:19.063 回答