4

我正在尝试编写一个 pom.xml,它允许我在本地运行命令并获取我的 jruby Rails 应用程序具有的所有依赖项。我看到两个不同的配置,但我不完全确定要使用哪个(因为我不是 java 人)

首先,我看到的许多 Pom 只是在 pom.xml 的根目录下有一个标签,列出了所有依赖项。然而,这没有关于这些存储位置等的任何信息......所以我觉得这不是我想要的(我需要将它们复制到我的 rails lib 目录)

第二种选择,我在 mvn 文档中看到的是使用 maven-dependency-plugin,这似乎更像我正在寻找的。我假设我的 outputDirectory 会像lib

所以我不完全理解第一个选项的依赖列表的目的是什么。我想要的只是 mvn 将我的 jar 复制到本地(然后最终当我的 CI 服务器进行部署时)。有人可以指出我正确的方向吗?

第一个选项

<project>
  <dependencies> 
   <dependency>
     <groupId>commons-lang</groupId>
     <artifactId>commons-lang</artifactId>
     <version>2.4</version>
   </dependency>
</project>

第二种选择

<project>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <configuration>
          <artifactItems>
            <artifactItem>
              <groupId>[ groupId ]</groupId>
              <artifactId>[ artifactId ]</artifactId>
              <version>[ version ]</version>
              <type>[ packaging ]</type>
              <classifier> [classifier - optional] </classifier>
              <overWrite>[ true or false ]</overWrite>
              <outputDirectory>[ output directory ]</outputDirectory>
              <destFileName>[ filename ]</destFileName>
            </artifactItem>
          </artifactItems>
          <!-- other configurations here -->
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
4

1 回答 1

1

首先,我看到的许多 Pom 只是在 pom.xml 的根目录下有一个标签,列出了所有依赖项。然而,这没有关于这些存储位置等的任何信息......所以我觉得这不是我想要的(我需要将它们复制到我的 rails lib 目录)

这是在 Java 项目中声明和使用依赖项的传统方式。在元素下声明的依赖项从“远程存储库”下载并安装到您的“本地存储库”(默认情况下),然后从那里处理工件。Maven 项目(至少是 Java 项目)不使用本地文件夹来存储它们的依赖项。<dependencies>~/.m2/repositorylib/

第二种选择,我在 mvn 文档中看到的是使用 maven-dependency-plugin,这似乎更像我正在寻找的。我假设我的 outputDirectory 将类似于 lib

maven 依赖插件允许与工件交互并将它们从本地或远程存储库复制/解压缩到指定位置。所以它可以用来获取一些依赖项并将它们复制到一个lib/目录中。实际上,它有几个目标允许这样做:

  • dependency:copy获取插件配置部分中定义的工件列表并将它们复制到指定位置,如果需要,重命名它们或剥离版本。如果远程存储库中不存在这些工件,则此目标可以解析它们。
  • dependency:copy-dependencies获取项目直接依赖项列表和可选的传递依赖项,并将它们复制到指定位置,如果需要,剥离版本。这个目标也可以从命令行运行。

第一个目标将使用您在第二个选项中描述的设置。第二个目标将使用您在第一个选项中描述的标准项目依赖项。这两种方法都行得通。

这里的问题是我不确切知道 JRuby Rails 应用程序是什么,开发工作流程是什么,如何构建这样的应用程序等等,所以我不知道你需要做什么,因此,我不知道你需要做什么是使用 Maven 实现它的最佳方式。

所以我用谷歌搜索了一下,发现这篇文章展示了另一种基于操作系统命令的方法(使用 maven exec 插件),并且完成pom.xml了一些其他的事情。也许您应该看看它并将其用作起点,而不是重新发明一切。这实际上是我的建议。

于 2010-02-10T00:35:02.250 回答