从Maven编程下载源代码Jar

3pmvbmvn  于 12个月前  发布在  Maven
关注(0)|答案(1)|浏览(95)

我有一个非常简单的要求,就像下面这样-
1.我需要写一个命令行工具,它将接受-groupId,artifactId和版本
1.然后,它将从maven下载该依赖项的源代码文件
1.例如,如果groupId = log4jartifactId = log4jversion = 1.2.9,则会下载log4j-1.2.9-sources.jar
到目前为止,我已经做了以下分析/尝试,但我没有得到任何运气。有人可以帮助我吗?
1.使用maven dependency:copy插件如下-mvn Dclassifier=sources dependency:copy -Dartifact=log4j:log4j:1.2.8
1.上面的命令不下载源代码,而只下载工件文件(即使包含Dclassifier=sources)
3.还尝试了-mvn dependency:sources -Dartifact=log4j -DgroupId=log4j -Dversion=1.2.9。这需要maven命令执行目录中的pom.xml,这不是一个可行的选项,因为这需要动态生成pom.xml。
请帮助如果任何人有任何线索如何实现它?

yc0p9oo0

yc0p9oo01#

因此,首先根据您的给定尝试,它可能工作,因为那些给定的参数(通过mvn Dclassifier=sources dependency:copy -Dartifact=log4j:log4j:1.2.8定义)根本不存在。请查看goal copy的文档。
你可以做的是设置一个简单的pom文件,看起来像这样:

<project
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>com.soebes.so.example.download</groupId>
  <artifactId>example-download</artifactId>
  <version>1.0-SNAPSHOT</version>

  <build>
    <pluginManagement>
      <plugins>
        .
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>3.6.1</version>
        </plugin>
        ..
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>copy</id>
            <phase>none</phase>
            <goals>
              <goal>copy</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>${groupId}</groupId>
                  <artifactId>${artifactId}</artifactId>
                  <version>${version}</version>
                  <classifier>sources</classifier>
                  <outputDirectory>${project.build.directory}</outputDirectory>
                </artifactItem>
              </artifactItems>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

字符串
通过使用上面的命令,你现在可以像这样调用命令行:

mvn dependency:copy@copy  -DgroupId=log4j -DartifactId=log4j -Dversion=1.2.9


这将下载给定的工件并存储到<outputDirectory>${project.build.directory}</outputDirectory>定义的位置

相关问题