假设我的本地计算机上有一个Maven 2 Java项目。我构建项目.jar
文件并使用mvn install
将其推送到我当地的Maven仓库。
问题:
如何强制Maven也将项目源jar
推送到本地仓库?
如果我在开发新项目时使用上述项目作为依赖项,并且可以使用mvn eclipse:eclipse -DdownloadSources
功能,那么这很有用。
答案 0 :(得分:48)
此代码段会自动安装/部署任何安装/部署的源jar:
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.1.2</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>verify</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
</project>
或者从命令行:
mvn clean source:jar install
答案 1 :(得分:0)
我找到了一个更好的答案,只需将其添加到您的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
现在在本地存储库jar和源代码上进行maven安装
在以下位置找到解决方案:https://www.mkyong.com/maven/generate-source-code-jar-for-maven-based-project/(我没有任何关联)
答案 2 :(得分:0)
上述答案的补充:
对于我来说,它仍然无法正常工作。生成了sources.jar,它在目标文件夹中可用,但在本地存储库中不可用。这样做的原因是我指定了不同的阶段:<phase>install</phase>
在这种情况下,首先执行maven安装插件,然后将jar文件复制到本地存储库中。然后生成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
因此,指定比安装更早的阶段非常重要(就像在已接受的答案中正确提到的那样)。