1

私はMavenを初めて使用し、プロジェクトを戦争として、そしてjarとして展開しようとしています。プロジェクトを分割して同じことをしたいのですが、大きすぎて単純な時間で実行できません。

mavenが追加のjarファイルをデプロイしているのを見つけました。これは、いくつかのプラグインを追加することを提案しました。

インストールプラグインはうまく機能します

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <executions>
        <execution>
            <phase>install</phase>
            <goals>
                <goal>install-file</goal>
            </goals>
            <configuration>
                <packaging>jar</packaging>
                <artifactId>${project.artifactId}</artifactId>
                <groupId>${project.groupId}</groupId>
                <version>SNAPSHOT</version>
                <file>
                    ${project.build.directory}/${project.artifactId}-SNAPSHOT.jar
                </file>
            </configuration>
        </execution>
    </executions>
</plugin>

出力は次のとおりです。

[INFO] [install:install-file {execution: default}]
[INFO] Installing C:\Server\example\code\server\my-project\target\my-project-SNAPSHOT.jar to C:\Users\Kyle\.m2\repository\com\example\main-project\my-project\SNAPSHOT\my-project-SNAPSHOT.jar

問題はmaven-deploy-pluginにあります。私が強制的に使用しているSNAPSHOTバージョンを無視しているようです。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-deploy-plugin</artifactId>
    <executions>
        <execution>
            <phase>deploy</phase>
            <goals>
                <goal>deploy-file</goal>
            </goals>
            <configuration>
                <packaging>jar</packaging>
                <generatePom>true</generatePom>
                <url>${project.distributionManagement.snapshotRepository.url}</url>
                <artifactId>${project.artifactId}</artifactId>
                <groupId>${project.groupId}</groupId>
                <version>SNAPSHOT</version>
                <!--${project.version}!="SNAPSHOT" for some reason-->
                <file>${project.build.directory}/${project.artifactId}-SNAPSHOT.jar</file>
            </configuration>
        </execution>
    </executions>
</plugin>

他のバージョン番号(YYYYMMDD.HHmmSS-#)を使用しているようです

[INFO] [deploy:deploy-file {execution: default}]
[INFO] Retrieving previous build number from remote-repository
Uploading: http://build.example.biz:8081/artifactory/libs-snapshots-local/com/example/main-project/my-project/SNAPSHOT/my-project-20120625.161551-2.jar
42993K uploaded  (my-project-20120625.161551-2.jar)

私は何が間違っているのですか?

4

2 に答える 2

1

私が観察したことの1つは、次のような先行番号なしでバージョン SNAPSHOT を使用していることです。

1.0.0-SNAPSHOT

または少なくとも:

1-SNAPSHOT

SNAPSHOT を使用しているだけでは意味がありません。この場合、どの開発ラインについて話しているのかが原因です。

もう1つのことは、MavenのSNAPSHOT(正しい方法で使用していると仮定)は、SNAPSHOTの代わりにタイムスタンプが配置されるアーティファクトです。これは、複数の SNAPSHOT をリリースできるようにする方法ですが、それらを区別できるようにします。

したがって、出力に表示されたものは、Maven が SNAPSHOT から作成したものとまったく同じです。

[INFO] [deploy:deploy-file {execution: default}]
[INFO] Retrieving previous build number from remote-repository
Uploading: http://build.example.biz:8081/artifactory/libs-snapshots-local/com/example/main-project/my-project/SNAPSHOT/my-project-20120625.161551-2.jar
42993K uploaded  (my-project-20120625.161551-2.jar)
于 2012-06-25T21:00:24.940 に答える
0

それぞれのリモート リポジトリには、http://build.example.biz:8081/artifactory/libs-snapshots-local/com/example/main-project/my-project/SNAPSHOT/maven-metadata.xml. それを見ると、最新のタイムスタンプがそれぞれの にマッピングされていることがわかりますSNAPSHOT。これは、Maven 2 と 3 の両方での典型的な動作です。Maven 3 では、タイムスタンプ付きのSNAPSHOT-s を使用するのがデフォルトの動作だと思います。

Maven 経由でアーティファクトをダウンロードしようとすると、正しく解決されると思いますので、心配する必要はありません。

于 2012-06-25T23:00:15.083 に答える