1

プロジェクトの下のサブディレクトリには、より大きなプロジェクト内の他のモジュールと共有する必要がある、私が作成および保守するコードのライブラリ モジュールがあります。便宜上、それを使用するすべてのモジュールと同時に開発されます。

project
  libs
  module-A
  module-B
  module-N
  library-module

ビルドが私たちの手を離れた後の複雑な理由により、ビルド ホストのローカル Maven リポジトリ ( ~/.m2/repository) にデプロイしたくありません。代わりに、プロジェクトのローカル サブディレクトリ here に配置しますlibs

コマンドラインから、次のようにしてローカルの Maven リポジトリに配置することはわかっていますが、コマンドラインからこれを実行したくなく、結果をローカルの Maven リポジトリに移動させたくありません。mvn installライブラリモジュールサブディレクトリのビルドシステムによって実行されたときに、これが発生することを望みます。

mvn install:install-file -Dfile=your-artifact-1.0.jar \
                         [-DpomFile=your-pom.xml] \
                         [-Dsources=src.jar] \
                         [-Djavadoc=apidocs.jar] \
                         [-DgroupId=org.some.group] \
                         [-DartifactId=your-artifact] \
                         [-Dversion=1.0] \
                         [-Dpackaging=jar] \
                         [-Dclassifier=sources] \
                         [-DgeneratePom=true] \
                         [-DcreateChecksum=true]

(私が探している答えは IDE に依存しないことに注意してください。)

4

1 に答える 1

1

提供された要件を満たすには、次の 2 つの構成手順が必要です。

  • Maven インストール プラグインskipのオプションを使用して、ローカル リポジトリへのデフォルトのアーティファクト インストールを無効にします。
  • ビルドの一部としてゴールを設定するinstall-fileには、POM 内でゴールを構成します (したがって、コマンド ラインから手動で呼び出す必要はありません)。

次の構成で提供されます。

<properties>
    <library.repository.folder>../libs</library.repository.folder>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-install-plugin</artifactId>
            <version>2.5.2</version>
            <configuration>
                <skip>true</skip>
            </configuration>
            <executions>
                <execution>
                    <id>install-artifact</id>
                    <phase>install</phase>
                    <goals>
                        <goal>install-file</goal>
                    </goals>
                    <configuration>
                        <groupId>${project.groupId}</groupId>
                        <artifactId>${project.artifactId}</artifactId>
                        <version>${project.version}</version>
                        <packaging>${project.packaging}</packaging>
                        <file>${project.build.directory}/${project.build.finalName}.${project.packaging}</file>
                        <localRepositoryPath>${library.repository.folder}</localRepositoryPath>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

library.repository.folder目的のターゲット フォルダを指すために使用されるプロパティに注意してくださいlib(パスが異なる場合は変更します)。上記の構成では、標準の maven プロパティ (プロジェクトの座標とパッケージ化用) を使用していますが、必要に応じて変更 (または実際の値をハードコーディング) できます。

また、install-fileゴールはlib、ローカル リポジトリ (lib\groupId\artifactId\version\file.jar) と同じフォルダー構造をフォルダーの下に再作成することに注意してください。代わりに、ファイルを lib フォルダー (lib\file.jar) の直下に置きたい場合は、次の構成に移動できます。

<properties>
    <library.repository.folder>../libs</library.repository.folder>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-install-plugin</artifactId>
            <version>2.5.2</version>
            <configuration>
                <skip>true</skip>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <outputDirectory>${library.repository.folder}</outputDirectory>
            </configuration>
        </plugin>
    </plugins>
</build>

今回はinstall-fileゴールを使用するのではなく、 Maven Jar プラグインjarのゴールを使用して、パッケージ化されたアーティファクトを(標準フォルダーの代わりに)フォルダーに直接配置し、パッケージ中に(ではなく) 配置します。libtargetphaseinstall

何らかの理由で最終アーティファクトをターゲット フォルダーに保持し、それを lib フォルダー (maven フォルダー階層なし) に直接コピーし、インストール フェーズ中に行う場合は、次の構成に移動できます。

<properties>
    <library.repository.folder>../libs</library.repository.folder>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-install-plugin</artifactId>
            <version>2.5.2</version>
            <configuration>
                <skip>true</skip>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <id>re-package-into-lib</id>
                    <phase>install</phase>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${library.repository.folder}</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
于 2016-02-26T22:07:56.777 に答える