【发布时间】:2011-05-01 05:25:42
【问题描述】:
假设我的本地机器上有一个 Maven 2 Java 项目。我使用mvn install 构建项目.jar 文件并将其推送到我的本地Maven 存储库。
问题:
如何强制 Maven 也将项目源 jar 推送到本地仓库?
如果我在开发新项目时将上述项目用作依赖项,这将很有用,并且可以使用mvn eclipse:eclipse -DdownloadSources 功能。
【问题讨论】:
假设我的本地机器上有一个 Maven 2 Java 项目。我使用mvn install 构建项目.jar 文件并将其推送到我的本地Maven 存储库。
问题:
如何强制 Maven 也将项目源 jar 推送到本地仓库?
如果我在开发新项目时将上述项目用作依赖项,这将很有用,并且可以使用mvn eclipse:eclipse -DdownloadSources 功能。
【问题讨论】:
这个 sn-p 自动安装/部署来自任何安装/部署的源 jar:
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>[whatever version is current]</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>verify</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
</project>
使用此链接检查current version of the maven-source-plugin
或者从命令行:
mvn clean source:jar install
【讨论】:
mvn clean source:jar install
对上述答案的补充:
它对我来说仍然无法正常工作。 sources.jar 已生成并在目标文件夹中可用,但在本地存储库中不可用。原因是我指定了不同的阶段:<phase>install</phase> 在这种情况下,首先执行 maven 安装插件并将 jar 文件复制到本地 repo。之后会生成 source.jar(因此不会被复制)。
[INFO] --- maven-install-plugin:2.4:install (default-install) @ foo ---
[INFO] Installing foo.jar into local repo
[INFO] Installing pom.xml into local repo
[INFO] Installing javadoc.jar into local repo
[INFO]
[INFO] --- maven-source-plugin:3.0.1:jar-no-fork (attach-sources) @ foo ---
[INFO] Building jar: foo-sources.jar
因此,指定比安装更早的阶段很重要(就像在接受的答案中正确提到的那样)。
【讨论】:
我找到了更好的答案,只需将其添加到您的 pom.xml 中
<build>
<plugins>
<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>
</plugins>
</build>
并从命令行运行:
mvn install
现在 maven 安装在您的本地存储库 jar 和源上
解决方案位于:https://www.mkyong.com/maven/generate-source-code-jar-for-maven-based-project/(我不以任何方式加入)
【讨论】: