4

コマンドをローカルで実行し、jruby Rails アプリが持つすべての依存関係を取得できるようにする pom.xml を作成しようとしています。ただし、2つの異なる構成が表示されていますが、どちらを使用すればよいか完全にはわかりません(私はJavaの人間ではないため)

まず、私が見ている多くの Pom には、すべての依存関係をリストする pom.xml のルートの下にタグがあります。ただし、これにはこれらが保存されている場所などに関する情報はありません...したがって、これは私が望んでいるものではないように感じます(それらを私のレールlibディレクトリにコピーする必要があります)

2 番目のオプションは、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>

2 番目のオプション

<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 dirにコピーする必要があります)

これは、Javaプロジェクトへの依存関係を宣言して使用するための従来の方法です。要素の下で宣言された依存関係は<dependencies>、「リモートリポジトリ」からダウンロードされ、「ローカルリポジトリ」(~/.m2/repositoryデフォルト)にインストールされ、そこからアーティファクトが処理されます。Mavenプロジェクト(少なくともJavaプロジェクト)はlib/、依存関係にローカルフォルダーを使用しません。

2番目のオプションは、mvn docsで見ているのは、maven-dependency-pluginを使用することです。これは、私が探しているものに似ているようです。その場合、私のoutputDirectoryはlibのようなものになると思います

Maven依存関係プラグインを使用すると、アーティファクトを操作し、ローカルまたはリモートのリポジトリーから指定された場所にアーティファクトをコピー/アンパックできます。lib/したがって、いくつかの依存関係を取得し、それらをコピーして、実際にディレクトリと言うことができます。実際には、これを可能にするいくつかの目標があります。

  • 依存関係:コピーは、プラグイン構成セクションで定義されたアーティファクトのリストを取得し、それらを指定された場所にコピーし、必要に応じて名前を変更するか、バージョンを削除します。この目標は、リモートリポジトリからのアーティファクトがローカルに存在しない場合にそれらを解決できます。
  • 依存関係:コピー依存関係は、プロジェクトの直接依存関係とオプションで推移的な依存関係のリストを取得し、それらを指定された場所にコピーし、必要に応じてバージョンを削除します。この目標は、コマンドラインから実行することもできます。

最初の目標は、2番目のオプションで説明した設定を使用します。2番目の目標は、最初のオプションで説明した標準のプロジェクト依存関係を使用することです。どちらのアプローチでも機能します。

ここでの問題は、JRuby Railsアプリとは何か、開発ワークフローとは何か、そのようなアプリの作成方法などが正確にわからないため、何をする必要があるのか​​、その結果、何をするのかが正確にわからないことです。 Mavenでそれを実装するための最良の方法です。

そこで、少しグーグルで検索したところ、OSコマンドに基づく別のアプローチ(maven execプラグインを使用)を示し、他のいくつかのことを完全に実行しているこの投稿を見つけました。pom.xmlたぶん、あなたはそれを見て、すべてを再発明するのではなく、出発点としてそれを使うべきです。これは実際の私の提案です。

于 2010-02-10T00:35:02.250 に答える