0

Maven を使用してマルチモジュール スタンドアロン アプリケーションを作成したいと考えています。

私の場合、「ローダー」プロジェクト (.jar) に他のすべてのプロジェクトを含めたいと思います。しかし、今は .jar ファイルのセット (loader.jar、crawler1.jar ... など) があります。

ローダーの .pom :

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.javanix.jmetalcrawler</groupId>
    <artifactId>loader</artifactId>
    <version>1.0</version>


    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.6</source>
                        <target>1.6</target>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

</project>

サブプロジェクトの .pom :

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">


    <modelVersion>4.0.0</modelVersion>

    <groupId>com.javanix.jmetalcrawler</groupId>
    <artifactId>Crawler-1</artifactId>
    <version>1.0</version>

    <dependencies>
        <dependency>
            <groupId>com.javanix.jmetalcrawler</groupId>
            <artifactId>loader</artifactId>
            <version>1.0</version>
        </dependency>
    </dependencies>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.6</source>
                        <target>1.6</target>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

</project>

親の .pom :

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.javanix.jmetalcrawler</groupId>
    <artifactId>parent</artifactId>
    <version>1.0</version>
    <packaging>pom</packaging>
    <name>jMetalCrawler</name>

    <modules>
        <module>Crawler-1</module>
        <module>Loader</module>
    </modules>


</project>

ライフサイクル:

  1. 「ローダー」をコンパイルします(インターフェース/抽象クラスがあります)
  2. 'crawler1' をコンパイル/パッケージ化します ('Loader' プロジェクトに依存するため)
  3. 'crawler2' をコンパイル/パッケージ化します ('Loader' プロジェクトに依存するため)
  4. コンパイル済みの「クローラー」プロジェクトを含むパッケージ ローダー

PS :

  1. Adrian Shum のおかげで、彼は私のプロジェクトをより明確にするためのアイデアを与えてくれました
  2. 「Launcher」プロジェクトでプロジェクトを再構築した後、maven-assembly-plugin(@see http://rombertw.wordpress.com/2010/05/14/maven-recipe-building-an-aggregate-jar/を参照)を介して依存関係を追加できます。
4

2 に答える 2

2

私はこのようなプロジェクト構造を提案します:

loader  (POM, multi-module)
  + loader-api  (JAR)
  + crawler1    (JAR, depends on loader-api)
  + crawler2    (JAR, depends on loader-api)
  + loader-app  (JAR, depends on loader-api, crawler1, crawler2.  
                 The standalone app is built here)

クローラーが依存するAPIとアプリ自体を分割することで、プロジェクト構造全体の管理がはるかに簡単になります。また、APIとアプリを混在させなくなったため、モジュール化も進んでいます。

于 2012-11-27T07:32:10.857 に答える
0

「maven を使用したマルチモジュール スタンドアロン アプリケーション」とは、すべての依存関係を含む自己完結型の実行可能 jar を意味する場合、onejar-maven-pluginが探しているものである可能性があります。使用例については、ドキュメントを参照してください。

于 2012-11-26T20:27:58.960 に答える