我有一个非标准配置的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中。我创建了一个符号链接到…在这种情况下,插件不接受父文件夹的路径。为此,我使用如下配置的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/**
, ../**/*.java
没有一个让我我的源代码进入我的源代码jar。虽然关于它的文档说它是一个相对文件集模式。
知道如何获取内容的java文件的../src文件夹放入我的源jar?
(是的,我的符号链接没有被打破,没有办法重新安排我的模块有一个标准的文件夹层次结构,这是一个包装项目围绕一个基于ant的项目)。
您可以使用<includes
属性来指定文件/模式,以便在源文件夹中包含。
您是否将<sourceDirectory>
设置为源的正确位置(符号链接等)?如果是这样,您可以省略上面的整个插件配置并在pom上运行mvn source:jar
吗?它应该能正确生成源文件
遇到了同样的问题,在谷歌搜索和尝试之后,终于找到了这个:
<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有package phase。在阶段生成源我得到"重复类",因为相同的源是从符号链接dir和从build-helper-maven-plugin中配置的dir添加的。