我有一个非标准配置的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-sources
,symbolic-link-to-sources/**
,{{1}他们都没有把我的资料带到我的资料罐中。虽然关于它的documentation说它是相对文件集模式。
知道如何将../src文件夹的java文件内容放到我的源jar中吗?
(是的,我的符号链接没有被破坏,没有办法重新安排我的模块有一个标准的文件夹层次结构,这是一个围绕基于ant的项目的包装项目。)
答案 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中配置的目录中添加了相同的源,因此我得到了“重复类”。