mavenプロジェクトビルドで作成されたjarファイルの依存関係をすべて一覧表示します。どのように私はこれをjavaで達成できますか?私はmavenコマンドmvn:dependency
を介して知っているが、私はそれをプログラム的にやりたい。 ヘルプ?Jar依存関係の取得方法
答えて
一般に、これは困難です。 、
グラブジャーのpom.xmlを空のディレクトリにそれを入れて、「MVN依存関係:リスト」と呼ぶ:あなたは何を行うことができますProcessBuilderを通過。結果を解析すると、依存関係のリストが表示されます。しかし、pom.xmlが独立したプロジェクトのpomとして解釈できない場合(例えば、マルチモジュールビルドの一部である場合)、これは失敗する可能性があります。
ProcessBuilderを使用する代わりに、依存関係のリストを決定するためにAetherを試してみてください。潜在的な問題は上記と同じです。
Aetherの代わりに、移行されたAetherプロジェクトであるhttp://maven.apache.org/resolver/index.htmlを使用してください。 – khmarbaise
次のブルートフォース方法では、依存関係(サードパーティ)のすべての絶対パスを正常に取得できます。独自のメソッドで 'FileUtils.getFileListRecursively'と 'FileUtils.readLines'を置き換えます。
FileUtils.getFileListRecursively("src")
現在のJavaプロジェクトの「SRC」フォルダからの絶対ファイルパスを読み込み、
FileUtils.readLines(filePath)
はテキストファイルとしてファイルを読み込み、文字列のArrayListのように、すべての行を返します。
HashSet<String> jarLocationsSet = new HashSet<>();
final String importString = "import ";
final String javaString = "java";
ArrayList<String> fileList = FileUtils.getFileListRecursively("src");
for (String filePath : fileList) {
if (filePath.endsWith(javaString) == false){
continue;
}
List<String> lines = FileUtils.readLines(filePath);
for (String line : lines) {
int isecl = line.indexOf(';');
if (line.contains(importString) == false || isecl < 0){
continue;
}
if (line.contains("static")){
continue;
}
int start = line.indexOf(importString);
line = line.substring(start + importString.length(), isecl);
if (line.startsWith(javaString)){
continue;
}
Class<?> clazz = null;
try {
clazz = Class.forName(line, false, ClassLoader.getSystemClassLoader());
} catch (Exception e) {
}
if (clazz == null){
continue;
}
URL location = clazz.getResource('/'+clazz.getName().replace('.', '/') + ".class");
String locationString = location.toString();
int jarIndex= locationString.indexOf(".jar");
if (jarIndex < 0){
continue;
}
locationString = locationString.substring(0, jarIndex + 4);
jarLocationsSet.add(locationString);
}
}
for (String jarLocation : jarLocationsSet) {
System.out.println("jarLocation = " + jarLocation);
}
Edit:このメソッドは、使用されているすべてのjarファイルを取得できますjarファイルが使用されます)。 – Tom
- 1. gradleのローカルjar依存関係を取得する方法
- 2. 依存関係の取得方法Java
- 3. build.xmlからすべての依存関係jarを取得する方法
- 4. jarファイルの親依存関係を取得するには?
- 5. Java 1.4のJarファイルの依存関係
- 6. Jettyの依存関係JARのカスタムフォルダ
- 7. JRubyのgemspecローカルのjar依存関係
- 8. ケトルのJar依存関係管理
- 9. 注釈 - JARの依存関係
- 10. jarファイルの逆依存関係
- 11. mavenビルドjarとマルチモジュールプロジェクトの依存関係
- 12. oracle.forms.handler.IHandlerの依存関係またはjar
- 13. Jar依存関係へのアクセス
- 14. sqljdbc4-4.0.jarのグレード依存関係
- 15. 依存関係jarのJPAエンティティ
- 16. jar以外の依存関係Gradle
- 17. Javaのjarファイルに依存関係を追加する方法
- 18. mavenコンパイルフェーズの実行方法test-jar依存関係
- 19. Mavenの依存関係:コピーの依存関係 - javadocとソースの取得
- 20. テーブル間のデータベース依存関係を取得する方法
- 21. Jenkins Pipeline Plugin - 依存関係の取得
- 22. 別の依存関係の依存関係を取得するには?
- 23. 依存関係とテストの依存関係を持つjarを作成する
- 24. JAR依存関係からRunnningテスト
- 25. AEM 6.1 Uber Jar Maven依存関係
- 26. 非jar SVN依存関係管理
- 27. Artifactory buildInfoからビルド依存関係を取得する方法
- 28. pysparkからRDD依存関係を取得する方法は?
- 29. "ソース" JARのローカルJAR依存関係を指定する方法は?
- 30. ノード:依存関係ライセンスを取得
'mvn dependency:tree'?プログラム的にどういう意味ですか?どのような目的のために? – khmarbaise
私はjavaで.. jarファイルのパスが与えられている場合、私はその扶養家族のジャー(サードパーティのジャー)を知ることができますか? – NSF
jarファイルは本当に助けにならないでしょう...あなたはpomファイルを持つ必要があります(一般的には、Mavenを使ってjarを構築する場合、pomファイルは通常jarに含まれていますが必ずしもそうではありません)。あなたはこれまでJavaを使って答えましたが、目的は何ですか?どのような問題を達成しようとしていますか? – khmarbaise