如何将源上传到本地Maven存储库

时间:2010-10-27 10:04:36

标签: java maven-2 maven

假设我的本地计算机上有一个Maven 2 Java项目。我构建项目.jar文件并使用mvn install将其推送到我当地的Maven仓库。

问题:

如何强制Maven也将项目源jar推送到本地仓库?

如果我在开发新项目时使用上述项目作为依赖项,并且可以使用mvn eclipse:eclipse -DdownloadSources功能,那么这很有用。

3 个答案:

答案 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

因此,指定比安装更早的阶段非常重要(就像在已接受的答案中正确提到的那样)。