【问题标题】:Maven dependency plugin copy jar with dependenciesMaven依赖插件复制jar与依赖
【发布时间】:2015-05-12 13:41:21
【问题描述】:

我正在尝试将一个 jar 从我的本地存储库复制到另一个项目中,如下所述:

http://maven.apache.org/plugins/maven-dependency-plugin/examples/copying-artifacts.html

但是,我的 jar 是从 maven-assembly-plugin 作为“具有依赖项的 jar”出来的,它将常规 jar 和组装后的 jar 放在我的本地仓库中。 jar 名称类似于:

example-test-0.0.1-SNAPSHOT-jar-with-dependencies.jar

如果我手动复制,我可以在 repo 中找到它并使用它。我认为让 maven 复制它是一个好主意,所以我使用了上面描述的依赖复制目标。

但是我不能让它工作,所以它复制了“具有依赖关系的 jar”jar。

这是 pom 的样子:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.10</version>
    <executions>
      <execution>
        <id>copy</id>
        <phase>package</phase>
        <goals>
          <goal>copy</goal>
        </goals>
        <configuration>
          <artifactItems>
            <artifactItem>
              <groupId>my.group</groupId>
              <artifactId>example-test</artifactId>
              <version>0.0.1-SNAPSHOT</version>
              <type>jar</type>
              <overWrite>true</overWrite>
              <outputDirectory>libs</outputDirectory>
              <destFileName>somename.jar</destFileName>
            </artifactItem>
          </artifactItems>

          <overWriteReleases>false</overWriteReleases>
          <overWriteSnapshots>true</overWriteSnapshots>
        </configuration>
      </execution>
    </executions>
  </plugin>

我尝试将类型设置为“jar-with-dependencies”,但没有奏效。它仅在我将类型设置为“jar”时才有效,但随后它会复制常规未组装的 jar。任何想法如何解决这个问题?

【问题讨论】:

  • IIRC 没有type=jar-with-dependencies;把这些当作猜测。我认为它不起作用,因为您要复制的 jar 还不存在。或者,更好的是,在您链接的页面中间,它说将插件绑定到 after install 的阶段。我可以看到的另一个问题是插件将复制通常的 Maven 坐标 &lt;groupId&gt;:&lt;artifactId&gt;:&lt;version&gt; 指向的工件,并且可能没有任何东西可以识别您的 jar-with-dependencies - 但我不太确定这一点。
  • 这个其他项目是现有项目的模块还是独立项目?
  • 嗯,它有点复杂,基本上我尝试使用 Maven 设置 Android,但没有成功,我花了太多时间在这上面,因为我的 android 项目依赖于一个 jar,它不是我的 android 的一部分只需放入“libs”文件夹,但每次我更改 jar 源中的某些内容时,我都必须这样做......所以我想我至少可以尝试使用 maven 来做这件事,因为我无法制作整个 android-maven插件工作
  • 当然我也可以包括单独的罐子,因为至少这似乎有效。这当然意味着它只是另外 2-3 个工件,但我认为我可以让它像一个罐子一样工作

标签: maven jar maven-2 maven-3 maven-plugin


【解决方案1】:

如果你有这样的神器:

example-test-0.0.1-SNAPSHOT-jar-with-dependencies.jar

你想这样引用它:

        <artifactItem>
          <groupId>my.group</groupId>
          <artifactId>example-test</artifactId>
          <version>0.0.1-SNAPSHOT</version>
          <type>jar</type>
          <classifier>jar-with-dependencies</classifier>
          <overWrite>true</overWrite>
          <outputDirectory>libs</outputDirectory>
          <destFileName>somename.jar</destFileName>
        </artifactItem>

例子在这里:

        <artifactItem>
          <groupId>[ groupId ]</groupId>
          <artifactId>[ artifactId ]</artifactId>
          <version>[ version ]</version>
          <type>[ packaging ]</type>
  this---><classifier> [classifier - optional] </classifier>
          <overWrite>[ true or false ]</overWrite>
          <outputDirectory>[ output directory ]</outputDirectory>
          <destFileName>[ filename ]</destFileName>
        </artifactItem>

【讨论】:

    【解决方案2】:
    <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <warSourceDirectory>WebContent</warSourceDirectory>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>install</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>WEB-INF/lib</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    

    这会将所有需要的 jar 复制到 WEB-INF/lib ,包括依赖 jar

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-13
      • 2012-06-30
      • 1970-01-01
      • 1970-01-01
      • 2019-07-14
      相关资源
      最近更新 更多