0

2 つの異なるプロジェクトをコンパイルし、このディレクトリにクラスを作成する Maven プロジェクトがあります: ${project.build.directory}/classes

${project.build.directory} は、pom.xml が存在するディレクトリを指します。

各プロジェクトの関連するディレクトリ/クラスからjarファイルを作成するために、異なる「実行」ブロックでmaven-jar-pluginを使用しています。私は Maven に非常に慣れていないため、適切な "include" および "exclude" ディレクトリを定義するのが困難です。

これは私のクラスが存在する構造です:

\ターゲット\クラス\com

\target\classes\com\microsoft

\target\classes\com\google

\ターゲット\クラス\org

最初の jar ファイルは、次のクラスから作成する必要があります。

\target\classes\com\microsoft

\ターゲット\クラス\org

2 番目の jar は、これらのクラスから作成する必要があります。

\target\classes\com\google

以下は、これらのjarを作成するための「実行」ブロックを持つ「ビルド」ブロックの一部です。最初の jar は msn-prod と呼ばれ、もう 1 つは google と呼ばれます。ご覧のとおり、これらの jar を作成するためにさまざまな組み合わせをすべて試しましたが、どれも機能しませんでした。これらは、コメントされている部分として次のビルド ブロックに存在します。

誰かがこれについて私を助けてくれますか? どんな助けでも大歓迎です。

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.3.2</version>
            <executions>
                <execution>
                    <id>msn-prod</id>
                    <goals><goal>jar</goal></goals> 
                    <phase>generate-resources</phase>
                    <configuration>
                        <classifier>msn-prod</classifier>    
                        <!-- <classesDirectory>${project.build.directory}/classes/com/microsoft</classesDirectory>
                        <includes>
                            <include>**/*.class</include>
                        </includes> 
                        <classesDirectory>${project.build.directory}/classes/org</classesDirectory>
                        <includes>
                            <include>**/*.class</include>
                        </includes>-->   
                        <classesDirectory>${project.build.directory}/classes</classesDirectory>
                        <!-- <includes>
                            <include>**/*.class</include>
                        </includes>-->                           
                        <!-- <excludes>
                            <exclude>**/com/google/*</exclude>
                        </excludes>-->                          
                        <!-- <excludes>
                            <exclude>**/google/*.class</exclude>
                        </excludes>-->                              
                        <includes>
                            <include>**/com/microsoft/*.class</include>
                            <include>**/org/*.class</include>
                        </includes>             
                        <finalName>${msn.prod}-${msn.api.version}</finalName>              
                    </configuration>
            </execution> 

            <execution>
                    <id>google</id>
                    <goals><goal>jar</goal></goals> 
                    <phase>generate-resources</phase>
                    <configuration>
                        <classifier>google</classifier>

                        <!-- <classesDirectory>${project.build.directory}/classes</classesDirectory>
                        <includes>
                            <include>**/com/google/*.class</include>
                        </includes>-->                          
                        <classesDirectory>${project.build.directory}/classes/com/google</classesDirectory>
                        <includes>
                            <include>**/*.class</include>
                        </includes>                                     
                        <finalName>${google}-${google.api.version}</finalName>              
                    </configuration>
            </execution>

        </executions>
    </plugin>
4

1 に答える 1

2

モジュールごとに 1 つのビルド アーティファクトという Maven のベスト プラクティスに違反しているため、問題が発生しています。複数のプロジェクトに分割するだけで、簡単になります。

于 2012-05-30T06:24:30.403 に答える