maven sources插件包括配置

时间:2013-02-27 14:46:00

标签: maven fileset maven-source-plugin

我有一个非标准配置的maven项目:

$> tree                                                                                          
.
├── pom.xml
├── symbolic-link-to-sources -> ../src
└── target
    ├── maven-archiver
    │   └── pom.properties
    ├── project-1.0-SNAPSHOT-sources.jar
    ├── project-1.0-SNAPSHOT.jar
    └── surefire

我正在尝试生成这个maven模块的源jar,其来源是../src。在插件不接受路径中的父文件夹的情况下,我创建了一个符号链接到../src。为此,我使用如下配置的maven源插件:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-source-plugin</artifactId>
  <version>2.2.1</version>
  <configuration>
    <includePom>true</includePom>
    <includes>
      <include>symbolic-link-to-sources/**</include>
    </includes>
  </configuration>
</plugin>

我使用mvn source:jar运行此插件。不幸的是我在源jar中只得到了pom.xml。如果我将includePom设置为false,则插件不会创建源存档。

我尝试了许多内容<include>../src../src/**../**symbolic-link-to-sourcessymbolic-link-to-sources/**,{{1}他们都没有把我的资料带到我的资料罐中。虽然关于它的documentation说它是相对文件集模式。

知道如何将../src文件夹的java文件内容放到我的源jar中吗?

(是的,我的符号链接没有被破坏,没有办法重新安排我的模块有一个标准的文件夹层次结构,这是一个围绕基于ant的项目的包装项目。)

2 个答案:

答案 0 :(得分:0)

您可以使用<includes属性指定要在源文件夹中包含的文件/模式。

您是否已将<sourceDirectory>设置为源的正确位置(符号链接等)?如果是这样,你可以省略上面的整个插件配置,只在pom上运行mvn source:jar吗?它应该正确生成源。

答案 1 :(得分:0)

遇到同样的问题,经过谷歌搜索并最终尝试得出以下结论:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>build-helper-maven-plugin</artifactId>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>add-source</goal>
      </goals>
      <configuration>
        <sources>
          <source>../common/src/main/java</source>
        </sources>
      </configuration>
    </execution>
  </executions>
</plugin>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-source-plugin</artifactId>
  <executions>
    <execution>
      <id>attach-sources</id>
      <goals>
        <goal>jar</goal>
      </goals>
    </execution>
  </executions>
</plugin>

其中“ ../common/src/main/java”是指向在当前项目中作为符号链接链接的源的路径。

请注意,build-helper-maven-plugin具有软件包 phase 。在阶段 generate-sources 中,由于符号链接目录和build-helper-maven-plugin中配置的目录中添加了相同的源,因此我得到了“重复类”。