タグ付けされた質問 「dependency-management」

ソフトウェアプロジェクトで使用される依存関係(サードパーティライブラリなど)の管理。

8
Gradleでの実装とコンパイルの違いは何ですか?
Androidのメーカー3.0にアップデートすると、新しいプロジェクトを作成した後、私は中にいることに気づいたbuild.gradleのではなく、新しい依存関係を追加するための新しい方法がありますcompileがありimplementation、代わりのtestCompile存在ですtestImplementation。 例: implementation 'com.android.support:appcompat-v7:25.0.0' testImplementation 'junit:junit:4.12' の代わりに compile 'com.android.support:appcompat-v7:25.0.0' testCompile 'junit:junit:4.12' それらの違いは何ですか?何を使うべきですか?

30
Android Studio:ライブラリとしてjarを追加しますか?
新しいAndroid Studioを使用しようとしていますが、正しく動作していないようです。 JSONオブジェクトをシリアライズ/デシリアライズするためにGsonライブラリを使用しています。しかし、ライブラリはどういうわけかビルドに含まれていません。 MainActivityだけで新しいプロジェクトを作成しました。/ libsフォルダー内のgson-2.2.3.jarをコピーし、ライブラリ依存関係として追加しました(右クリック->ライブラリーとして追加)。これにはandroid studioのjarが含まれるため、ソースファイルから参照できます。 プロジェクトを実行しようとすると、コンパイルできないため、追加しました。 compile files('libs/gson-2.2.3.jar') de .gradleファイルの依存関係に。その後は正しくコンパイルされますが、アプリケーションを実行するとClassDefNotFoundException。 誰かが私が間違っていることを知っていますか?


12
DependencyManagementとMavenの依存関係の違い
違いは何であるdependencyManagementとはdependencies?Apache MavenのWebサイトでドキュメントを確認しました。で定義された依存関係dependencyManagementは、バージョンを指定せずに子モジュールで使用できるようです。 例えば: 親プロジェクト(Pro-par)は、以下の依存関係を定義しますdependencyManagement。 <dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8</version> </dependency> </dependencies> </dependencyManagement> 次に、Pro-parの子で、junitを使用できます。 <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> </dependencies> しかし、親pomでjunitを定義する必要があるのでしょうか。必要なモジュールで直接定義しないのはなぜですか?

11
Java / Mavenで「Xerces hell」を処理しますか?
私のオフィスでは、Xercesという単語を単に言及するだけで、開発者の殺意を呼び起こします。SOに関する他のXercesの質問をざっと見ると、ほとんどすべてのMavenユーザーがこの問題にいつか「触れられている」ことを示しているようです。残念ながら、問題を理解するには、Xercesの歴史について少し知識が必要です... 歴史 Xercesは、Javaエコシステムで最も広く使用されているXMLパーサーです。Javaで作成されたほとんどすべてのライブラリまたはフレームワークは、Xercesをある程度の能力で使用しています(直接ではない場合でも、推移的に)。 公式バイナリに含まれるXerces jar は、現在のところバージョン管理されていません。たとえば、Xerces 2.11.0実装jarには名前が付けられxercesImpl.jar、名前は付けられませんxercesImpl-2.11.0.jar。 XercesチームはMavenを使用しません。つまり、公式リリースをMaven Centralにアップロードしません。 Xercesは以前は単一のjar(xerces.jar)としてリリースされていましたが、1つはAPI(xml-apis.jar)を含み、もう1つはそれらのAPIの実装を含む()の2つのjarに分割されましたxercesImpl.jar。多くの古いMaven POMは、依然としてへの依存を宣言していxerces.jarます。過去のある時点で、XercesもとしてリリースされましたxmlParserAPIs.jar。これは、一部の古いPOMも依存しています。 jarをMavenリポジトリーにデプロイする人がxml-apisおよびxercesImpl jarに割り当てたバージョンは、多くの場合異なります。たとえば、どちらもXerces 2.8.0からのものであっても、xml-apisにはバージョン1.3.03が与えられ、xercesImplにはバージョン2.8.0が与えられる場合があります。これは、人々がxml-apis jarに実装する仕様のバージョンをタグ付けすることがよくあるためです。ここには非常に良いが不完全な内訳があります。 さらに複雑なことに、Xercesは、JREに含まれているJava API for XML Processing(JAXP)のリファレンス実装で使用されるXMLパーサーです。実装クラスはcom.sun.*名前空間の下に再パッケージ化されているため、一部のJREでは使用できない可能性があるため、直接アクセスするのは危険です。ただし、すべてのXerces機能がjava.*およびjavax.*APIを介して公開されるわけではありません。たとえば、Xercesシリアル化を公開するAPIはありません。 混乱する混乱に加えて、ほとんどすべてのサーブレットコンテナ(JBoss、Jetty、Glassfish、Tomcatなど)は、Xercesとともに1つ以上の/libフォルダで出荷されます。 問題 紛争解決 上記の理由のいくつか、またはおそらくすべてのために、多くの組織は、自分のPOMでXercesのカスタムビルドを発行および使用しています。小さなアプリケーションでMaven Centralのみを使用している場合、これは実際には問題ではありませんが、ArtifactoryまたはNexusが複数のリポジトリ(JBoss、Hibernateなど)をプロキシしているエンタープライズソフトウェアではすぐに問題になります。 たとえば、組織Aは次のように公開xml-apisします。 <groupId>org.apache.xerces</groupId> <artifactId>xml-apis</artifactId> <version>2.9.1</version> 一方、組織Bは次のものと同じものjarを公開する場合があります。 <groupId>xml-apis</groupId> <artifactId>xml-apis</artifactId> <version>1.3.04</version> B jarはAよりも低いバージョンですがjar、Mavenはが異なるため、それらが同じアーティファクトであることを認識していません groupId。したがって、競合の解決は実行できず、両方 jarのが解決された依存関係として含まれます。 クラスローダー地獄 上記のように、JREはJAXP RIのXercesに同梱されています。すべてのXerces Maven依存関係を<exclusion>sまたは<provided>、依存するサードパーティのコードは、使用しているJDKのJAXPで提供されるバージョンで動作する場合と動作しない場合があります。さらに、Xerces jarがサーブレットコンテナに同梱されており、これに対処する必要があります。これにはいくつかの選択肢があります。サーブレットのバージョンを削除して、コンテナがJAXPバージョンで実行されることを望んでいますか?サーブレットバージョンを残し、アプリケーションフレームワークがサーブレットバージョンで実行されることを望んでいますか?上記で概説した1つまたは2つの未解決の競合が製品に侵入した場合(大規模な組織で起こりやすい)、クラスローダーの地獄にすぐに気づき、実行時にクラスローダーが選択しているXercesのバージョンと、そのバージョンかどうかを疑問に思います。 WindowsとLinuxで同じjarを選択します(おそらくそうではありません)。 ソリューション? 私たちは、全てのXerces Mavenの依存関係をマーキングしようとした<provided>かのように<exclusion>アーティファクトが非常に多くの別名(持っていることを考えると(特に大規模なチームで)が、これは強制することは困難であるxml-apis、xerces、xercesImpl、xmlParserAPIs、など)。さらに、サードパーティのlibs / frameworksは、JAXPバージョンまたはサーブレットコンテナによって提供されるバージョンでは実行できない場合があります。 Mavenでこの問題にどのように対処すればよいでしょうか?依存関係をこのように細かく制御してから、階層型クラスローディングに依存する必要がありますか?すべてのXerces依存関係をグローバルに除外し、すべてのフレームワーク/ライブラリに強制的にJAXPバージョンを使用させる方法はありますか? 更新:Joshua …

16
build.gradleファイルにローカル.jarファイルの依存関係を追加するにはどうすればよいですか?
だから私は自分のbuild.gradleファイルにローカル.jarファイルの依存関係を追加しようとしました: apply plugin: 'java' sourceSets { main { java { srcDir 'src/model' } } } dependencies { runtime files('libs/mnist-tools.jar', 'libs/gson-2.2.4.jar') runtime fileTree(dir: 'libs', include: '*.jar') } そして、ここで.jarファイルをreferenceLibrariesフォルダーに追加したことがわかります。https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1/referencedLibraries しかし問題は、コマンドを実行すると、次のエラーが発生することです。 error: package com.google.gson does not exist import com.google.gson.Gson; これが私のリポジトリ全体です:https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1



5
PythonのMaven相当物[終了]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善したいですか?Stack Overflowのトピックとなるように質問を更新します。 5年前休業。 この質問を改善する 私はJava開発者/ Pythonの初心者ですが、Mavenの機能、特に依存関係の管理とビルドの自動化がありません(つまり、ビルドしないが、展開用のパッケージを作成する方法を教えてください)。 これらの機能を実現する同等のpythonはありますか? 注:私はpython 2.xを使用しています ありがとう。

13
Mavenを使用してリリースの依存関係を強制的に再ダウンロードする
私は依存関係Xのプロジェクトに取り組んでいます。XはYに依存しています。 以前はプロジェクトのpomにYを明示的に含めていました。しかし、それは使用されておらず、物事をより明確にするために、代わりに依存関係としてXのpomに追加しました。Xはリリース依存関係としてマークされています。 問題は、プロジェクトのpomからYを削除し、それをXのpomに追加した後、プロジェクトがそれを取得しないことmvn -U clean packageです。-Uはスナップショットを更新しますが、リリースはしません。 では、〜/ .m2 / repositoryディレクトリを削除せずに、Xのpomを強制的に再ダウンロードするにはどうすればよいですか?また、実行dependency:purge-local-repositoryしてみましたが、うまくいきませんでした。

6
EclipseにMaven依存関係を追加するにはどうすればよいですか?
Mavenの使い方がまったくわかりません。私はEclipseで2年間開発しており、まだそれを知る必要はありません。しかし、今私は次のことを行うことを提案するいくつかのドキュメントを見ています: 「プロジェクトに含めるには、このmaven依存関係をビルドに追加するだけです。」 <repository> <id>jboss</id> <url>http://repository.jboss.org/maven2</url> </repository> ... <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jackson-provider</artifactId> <version>1.1.GA</version> </dependency> Eclipseプロジェクトでこれを行うにはどうすればよいですか? Mavenについて何も知らないと仮定してください。mvnコマンドラインに入力して、コンピューターにインストールされている可能性があることを理解しましたが、それは私の知る範囲です。Eclipseでこれらの指示に従う同等の非Mavenの方法がある場合は、Mavenについて何も知らなくて幸せです。




5
composer:パッケージの正確なバージョンを見つける方法は?
たとえばモノログなど、別のライブラリに依存するライブラリAを書いているとします。 monologの最新バージョンをインストールしたいので、これをcomposer.jsonの中に入れます。 { "require": { "monolog/monolog": "*.*.*" } } 次に、実行し$ php composer.phar installます。 composer.lock内にインストールされているバージョンが見つかるはずでしたが、そこにはありませんでした。 { "hash": "d7bcc4fe544b4ef7561918a8fc6ce009", "packages": [ { "package": "monolog/monolog", "version": "dev-master", "source-reference": "2eb0c0978d290a1c45346a1955188929cb4e5db7" } ], "packages-dev": null, "aliases": [ ], "minimum-stability": "dev", "stability-flags": [ ] } ライブラリを特定のバージョンのセットに関連付けたいので、バージョンが必要です。たとえば、バージョンが1.3.5であることがわかった場合、composer.jsonに次のように記述します。 "require": { "monolog/monolog": "1.3.*" } 何か案は?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.