Maven可以生成包含源代码的jar

时间:2019-08-18 07:41:07

标签: maven

我尝试了一些教程讲授的2件事: 1.在maven-source-plugin中:

<plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <executions>
            <execution>
              <id>attach-sources</id>
              <phase>package</phase>
              <goals>
                <goal>jar-no-fork</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

然后使用cmd:

mvn install

mvn source:jar

mvn source:jar-no-fork

它们都不起作用。 2.在maven-jar-plugin中:

<plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
          <configuration>
            <includes>
              <include>**/*.java</include>
            </includes>
          </configuration>
        </plugin>

这些方法都不起作用。

然后如何生成包含源代码的jar。

1 个答案:

答案 0 :(得分:1)

要将Java源代码复制到主JAR文件中,可以使用resouces:copy-resources

        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <executions>
                <execution>
                    <id>copy-java-sources</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.outputDirectory}</outputDirectory>
                        <resources>          
                            <resource>
                                <directory>${project.build.sourceDirectory}</directory>
                                <filtering>false</filtering>
                            </resource>
                        </resources>              
                    </configuration>            
                </execution>
            </executions>
        </plugin>

但是请注意,这不是为Java源提供Maven的标准方法,仅应用于非常特殊的用例。

标准方法是启用release-profile,它使用maven-source-plugin创建仅包含源(在Maven Super POM中定义)的辅助源JAR。 IDE可以加载这些源JAR文件并将其显示给开发人员。

要激活Maven超级POM中定义的release-profile,可以使用:

-DperformRelease=true

它实际上并没有执行发布(没有版本更新或Git标签),而是激活了一些其他目标。