使用maven来管理jruby rails app中的java依赖项

时间:2010-02-09 22:33:05

标签: maven-2 dependencies jrubyonrails

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

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

第二个选项,我在mvn文档中看到的是使用maven-dependency-plugin,这看起来更像我正在寻找的东西。我假设我的outputDirectory类似于lib

所以我不完全理解第一个选项的依赖列表的用途是什么。我想要的只是在本地复制我的罐子(最后当我的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>

1 个答案:

答案 0 :(得分:1)

  

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

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

  

第二个选项,我在mvn文档中看到的是使用maven-dependency-plugin,这看起来更像我正在寻找的东西。我假设我的outputDirectory就像lib

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

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

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

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

所以我搜索了一下,发现this post显示了另一种基于OS命令的方法(使用maven exec插件)并且有一个完整的pom.xml做其他事情。也许你应该看一下它并将它作为起点而不是重新发明一切。这实际上是我的建议。