如何在命令行上指定Maven依赖插件get的版本范围

fkaflof6  于 2023-10-17  发布在  Maven
关注(0)|答案(3)|浏览(150)

我尝试使用maven依赖插件来获取特定版本范围内的工件。我需要在命令行(或脚本)中执行此操作
以下是我尝试的:

mvn dependency:get -Dartifact="junit:junit:[4.0,4.11)"

然而,这一范围显然没有得到承认。Maven尝试下载文本版本为 [4.0.0,4.11.0) 的工件时失败。
我想我使用了错误的语法和/或没有正确转义。
我怎样才能让maven * 获取 * 符合指定版本范围的最高版本工件?
错误消息:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.8:get (default-cli) on project standalone-pom: Couldn't download artifact: Missing:
[ERROR] ----------
[ERROR] 1) junit:junit:jar:[4.0,4.11)
xxb16uws

xxb16uws1#

此目标不支持版本范围:
https://issues.apache.org/jira/browse/MDEP-88
我得到:

Failed to retrieve POM for junit:junit:jar:[4.0,4.11): Could not transfer artifact junit:junit:pom:[4.0,4.11) from/to central (https://repo.maven.apache.org/maven2): Illegal character in path at index 49: https://repo.maven.apache.org/maven2/junit/junit/[4.0,4.11)/junit-[4.0,4.11).pom

所以范围不会被解析。
不知道有什么替代品可以做同样的事情:/
版本插件允许解析范围http://www.mojohaus.org/versions-maven-plugin/resolve-ranges-mojo.html,但只能在pom. xml中-需要创建一个假的pom. xml-使用此插件来解析版本,然后从创建的pom中获取-希望有更好的方法...

4ioopgfo

4ioopgfo2#

为了解决类似的问题

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.group.name</groupId>
                <artifactId>name-maven-plugin</artifactId>
                <version>[x,]</version> <!-- use any range -->
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>com.group.name</groupId>
                <artifactId>name-maven-plugin</artifactId>
                <!-- specify no version -->
                <configuration>
                    <!-- any config -->
                </configuration>
            </plugin>
....

上面的工作,但你得到一个关于插件中缺少的版本的警告,所以这可能会在未来的Maven版本中出错-根据警告

1zmg4dgp

1zmg4dgp3#

下面是一个使用maven-assembly-plugin的解决方法。它将带有版本范围的zip依赖项的内容解包到目录super/parent
pom.xml:

<dependencies>
  <dependency>
    <groupId>com.example</groupId>
    <artifactId>my-stuff</artifactId>
    <type>zip</type>
    <version>(,2)</version>
  </dependency>
</dependencies>

<build>
  <plugins>
    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <executions>
        <execution>
          <id>...</id>
          <phase>...</phase>
          <goals>
            <goal>single</goal>
          </goals>
          <configuration>
            <attach>false</attach>
            <appendAssemblyId>false</appendAssemblyId>
            <finalName>parent</finalName>
            <formats>
              <format>dir</format>
            </formats>
            <outputDirectory>super</outputDirectory>
            <descriptors>
              <descriptor>src/main/assembly/assembly.xml</descriptor>
            </descriptors>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

assembly.xml:

<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.2.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.2.0
    https://maven.apache.org/xsd/assembly-2.2.0.xsd">
  <id>...</id>
  <includeBaseDirectory>false</includeBaseDirectory>
  <dependencySets>
    <dependencySet>
      <includes>
        <include>com.example:my-stuff:zip</include>
      </includes>
      <unpack>true</unpack>
      <useProjectArtifact>false</useProjectArtifact>
      <useTransitiveDependencies>false</useTransitiveDependencies>
    </dependencySet>
  </dependencySets>
</assembly>

相关问题