地元の瓶からポンポンファイルでMavenの依存関係を作成する方法はあります

Jatin Vasnani:

あまりにも多くのjarファイルを持っており、それはそれらのすべてを管理することは困難になってきたJavaプロジェクトがあります。私は、Mavenのプロジェクトにこのプロジェクトを変換する方法がある知っているが、私は手動でポンポンファイルに私のプロジェクトでは、各jarファイルの依存関係を追加する必要はありません。

POMは、各ジャーの依存タグが含まれていますようにローカルのjarファイルを使用してポンポンファイルを作成する方法はあります。

編集:私は、私はローカルリポジトリへ/からjarファイルを追加したくないことを明確にしたいです。このプロジェクトは、異なるシステム間で複数のユーザーによって使用されるように、ローカルリポジトリのアプローチは、私のために動作しません。

私はすでに私はMavenプロジェクトに私のプロジェクトを変換するときに私がポンポンファイルにコピー&ペーストすることができるように持っているjarファイルのためのgroupId、たartifactIdとバージョンと一緒に定期的にポンポン依存エントリを作成したいです。私は私のプロジェクトでJARファイルの数が多いため、私はすべて手動で行う必要があります。

@Milen Dyankovが提供するソリューションは、私のために働きました。私は、JARファイルのほとんどから必要な情報を得ることができました。

Milen Dyankov:

このコード

    public static void main(String[] args) throws IOException {
        Set<String> missingMavenData = new HashSet<String>();
        String FOLDER = "/path/to/your/folder/with/jars";

        Files
         .walk(Paths.get(FOLDER), FileVisitOption.FOLLOW_LINKS)
         .map(Path::toFile)
         .filter(f -> f.isFile())
         .filter(f -> f.getName().endsWith(".jar"))
         .map(f -> {
            try {
                return new JarFile(f);
            } catch (IOException e) {
                e.printStackTrace();
                return null;
            }
         })
         .filter(Objects::nonNull)
         .map(jar -> {
             Properties properties = null;
             Enumeration<JarEntry> entries = jar.entries();
             while (entries.hasMoreElements()) {
                 JarEntry jarEntry = entries.nextElement();
                 if (jarEntry.getName().matches("^META-INF/maven/.*/pom\\.properties$")) {
                     try {
                         properties = new Properties();
                         properties.load(jar.getInputStream(jarEntry));
                         break;
                     } catch (IOException e) {
                         e.printStackTrace();
                     }
                 };
             } 
             if (properties == null) {
                 missingMavenData.add(jar.getName());
             }
             return properties;
         })
         .filter(Objects::nonNull)
         .forEach(properties -> {
            System.out.println("<depencency>");
            System.out.println("    <groupId>" + properties.getProperty("groupId")+ "</groupId>");
            System.out.println("    <artifactId>" + properties.getProperty("artifactId")+ "</artifactId>");
            System.out.println("    <version>" + properties.getProperty("version")+ "</version>");
            System.out.println("</depencency>");
         });

        System.out.println("Those JAR files do not contain Maven metadata:");
        missingMavenData.forEach(System.out::println);
    }

あなたのjarファイルを反復処理し、それらにMavenのメタデータを見つけようとします。それはそれを持って、あなたはそれを手動で追加することができますので、それを持っていないものの一覧が表示されます人のためのPOMエントリを生成します。私はこのことができます願っています。

更新:

私は、追加bom-helper:fromJarsの目標をBOMヘルパーMavenのプラグイン上のコードとほぼ同じことを行います。一つは、今、単純にプラグインを追加することができます

<plugin>
    <groupId>com.commsen.maven</groupId>
    <artifactId>bom-helper-maven-plugin</artifactId>
    <version>0.2.0</version>
</plugin>

そして呼び出すためにそれを設定fromJarsゴールを決めました。また、フォームのコマンドラインを呼び出すことができます。例えば:

mvn bom-helper:fromJars \
 -Dbom-helper.jarsFolder=/path/to/folder/with/jars \
 -Dbom-helper.inplace=true \
 -Dbom-helper.recursive

それらのメタデータをMavenのいるすべてのjarファイルのエントリで現在のポンポンを更新します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=333858&siteId=1