3

アセンブリ プラグインを使用して依存関係のある jar を構築し、プロジェクトを圧縮しています。次に、zip を nexus にアップロードする必要があります。クリーン インストールが機能し、期待どおりに zip ファイルが生成されます。deploy コマンドが失敗します。

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Analytics Feed Auditor
[INFO]    task-segment: [deploy]
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:testCompile]
[INFO] No sources to compile
[INFO] [surefire:test]
[INFO] No tests to run.
[INFO] [jar:jar]
[INFO] [assembly:single {execution: jar-with-dependencies}]
[INFO] Processing DependencySet (output=)
[INFO] Building jar: C:\code\imt workspaces\uat-trunk\AnalyticsAudit\target\AnalyticsAudit-1
.0-jar-with-dependencies.jar
[INFO] [assembly:single {execution: RELEASE}]
[INFO] Reading assembly descriptor: dist.xml
[INFO] Building zip: C:\code\imt workspaces\uat-trunk\AnalyticsAudit\target\AnalyticsAudit-1
.0-RELEASE.zip
[INFO] [install:install]
[INFO] Installing C:\code\imt workspaces\uat-trunk\AnalyticsAudit\target\AnalyticsAudit-1.0.
jar to C:\SVNRepository\com\dec\gbm\gb\gcf\amg\fo\AnalyticsAudit\1.0\AnalyticsAudit-1.0.jar
[INFO] Installing C:\code\imt workspaces\uat-trunk\AnalyticsAudit\target\AnalyticsAudit-1.0-
jar-with-dependencies.jar to C:\SVNRepository\com\dec\gbm\gb\gcf\amg\fo\AnalyticsAudit\1.0\Analytic
sAudit-1.0-jar-with-dependencies.jar
[INFO] Installing C:\code\imt workspaces\uat-trunk\AnalyticsAudit\target\AnalyticsAudit-1.0-
RELEASE.zip to C:\SVNRepository\com\dec\gbm\gb\gcf\amg\fo\AnalyticsAudit\1.0\AnalyticsAudit-1.0-REL
EASE.zip
[INFO] [deploy:deploy]
altDeploymentRepository = null
Uploading: https://dsnexus.uk.hibm.dec:8081/nexus/content/repositories/releases/com/dec/gbm/gb/gcf
/amg/fo/AnalyticsAudit/1.0/AnalyticsAudit-1.0.jar
6K uploaded
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error deploying artifact: Failed to transfer file: https://dsnexus.uk.hibm.dec:8081/nexus/co
ntent/repositories/releases/com/dec/gbm/gb/gcf/amg/fo/AnalyticsAudit/1.0/AnalyticsAudit-1.0.jar. Re
turn code is: 400

[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6 seconds
[INFO] Finished at: Fri Aug 09 15:58:22 BST 2013
[INFO] Final Memory: 14M/35M
[INFO] ------------------------------------------------------------------------

ここでいくつかの問題があります。まず、デフォルトのファイル名ではなく、カスタムの ZIP ファイル名が必要です。次に、JAR ではなく ZIP ファイルのみを Nexus にデプロイする必要があります。第三に、デプロイが現在の状態で機能しないのはなぜですか? 最後に、wget を使用して nexus から最新のリリースを自動的にダウンロードする方法を教えてください。

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project ....>
<modelVersion>4.0.0</modelVersion>
<groupId>com.dec.gbm.gb.gcf.amg.fo</groupId>
<artifactId>AnalyticsAudit</artifactId>
<version>1.0</version>
<name>Analytics Feed Auditor</name>
<description>Analytics Feed Auditor</description>
<packaging>jar</packaging>

<distributionManagement>
    <repository>
        <id>releases</id>
        <name>Internal Releases</name>
        <url>...</url>
    </repository>

    <snapshotRepository>
        <id>snapshots</id>
        <name>Internal Snapshots</name>
        <url>...</url>
    </snapshotRepository>

</distributionManagement>
<repositories>
    <repository>
        <id>releases</id>
        <name>Nexus Repository</name>
        <url>...</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>
<pluginRepositories>
    <pluginRepository>
        <id>releases</id>
        <name>Nexus Repository</name>
        <url>...</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>
<properties>
    <project.build.sourceEncoding>Cp1252</project.build.sourceEncoding>
</properties>

<dependencies>
    <dependency>
        <groupId>org.vicar</groupId>
        <artifactId>vicar</artifactId>
        <version>3.6</version>
        <scope>system</scope>
        <systemPath>
            ${project.basedir}/lib/vicar-3.6.jar
        </systemPath>
    </dependency>
    <dependency>...
    </dependency>
</dependencies>

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

        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
                <execution>
                    <id>jar-with-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                    <configuration>
                        <descriptorRefs>
                            <descriptorRef>
                                jar-with-dependencies
                            </descriptorRef>
                        </descriptorRefs>
                        <archive>
                            <manifest>
                                <addClasspath>true</addClasspath>
                                <classpathPrefix>
                                    lib/
                                </classpathPrefix>
                                <mainClass>
                                    com.dec.gbm.gb.gcf.amg.fo.AnalyticsAuditor
                                </mainClass>
                            </manifest>
                        </archive>
                    </configuration>
                </execution>
                <execution>
                    <id>RELEASE</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                    <configuration>
                        <descriptors>
                            <descriptor>dist.xml</descriptor>
                        </descriptors>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

dist.xml

<assembly>
<id>RELEASE</id>
<formats>
    <format>zip</format>
</formats>
<files>
    <file>
        <source>
            target/${project.artifactId}-${project.version}-jar-with-dependencies.jar
        </source>
        <outputDirectory>lib</outputDirectory>
    </file>
    <file>
        <source>${project.basedir}/bin/AnalyticsAudit.cmd</source>
        <outputDirectory />
    </file>
    <file>
        <source>
            ${project.basedir}/resources/analytics_audit.properties
        </source>
        <outputDirectory>resources</outputDirectory>
    </file>
    <file>
        <source>${project.basedir}/lib/vicar-3.6.jar</source>
        <outputDirectory>lib</outputDirectory>
    </file>
</files>

私はこれにあまりにも長い時間を費やし、やりすぎました。どんな助けにもとても感謝しています。

4

4 に答える 4

2

基本的に、maven-assembly プラグインを使用して zip をデプロイすることはできません。アセンブリ パーツはパッケージングの一部ですが、展開は後で行われます。このリンクが役立つかどうかを確認してください

maven-release-plugin を使用したアセンブリ パッケージのデプロイ

また

このプラグインを使用して、zip または tar ファイルmaven-build-helper-pluginをデプロイできます。

于 2013-09-30T10:56:14.217 に答える
0

Nexus が 400 ステータスを返す場合は、特定のリポジトリにアップロードすることを許可されていないアーティファクトをアップロードしていることを意味します。たとえば、スナップショットをリリース リポジトリにアップロードしようとしています。

「mvn deploy」でスナップショットとしてデプロイしようとしていると思います。「mvn release:prepare release:perform」を試して、安定版として「releases」リポジトリにリリースしてください。その 400 ステータス応答はもう得られません。

于 2014-04-29T14:28:55.083 に答える
0

pom.xml*.zip ファイルを Nexus に展開するには、適切なファイルが必要assembly.xmlです。

これは、必要な pom.xml です。

<project>
    <groupId>a.b</groupId>
    <artifactId>deploy-to-nexus</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!-- 
         it needs to be 'pom', otherwise maven will
         generate an <artifactId>-<version>.jar file as well
    -->
    <packaging>pom</packaging>

    <!-- nexus repositories -->
    <distributionManagement>
        <repository>
            <id>deploy-to-nexus-releases</id>
            <url>http://...</url>
        </repository>
        <snapshotRepository>
            <id>deploy-to-nexus-snapshots</id>
            <url>http://...</url>
        </snapshotRepository>
    </distributionManagement>

    <build>
        <plugins>
             <!-- assembly plugin will be activated by 'mvn package' -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.1.1</version>
                <configuration>
                    <descriptors>
                        <descriptor>assembly.xml</descriptor>
                    </descriptors>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

私のコメント:

  • v3.1.1のバージョンから設定に変更がありますmaven-assembly-plugin

  • のタイプを変更しない場合、このプロパティのデフォルト値が であるため、Maven はファイルもpackaging作成pom.xml*.zipます。*.jarjar

  • のバージョンが でpom終わる場合-SNAPSHOT、zip ファイルはリポジトリにアップロードされsnapshots、それ以外の場合releasesはリポジトリが使用されます。

assembly.xml の例:

<assembly>
    <id>bundle</id>
    <formats>
        <format>zip</format>
    </formats>
    <fileSets>
        <!-- add some files -->
        <fileSet>
            <directory>...</directory>
            <outputDirectory>...</outputDirectory>
            <includes>
                <include>**</include>
            </includes>
        </fileSet>
    </fileSets>
</assembly>

それで

  • mvn clean packageコマンドにより、*.zip ファイルが作成されます。

  • mvn clean deployコマンドは、zip を Nexus にアップロードします。

通常、同じバージョンのアーティファクトをreleasesリポジトリに 2 回アップロードすることは許可されていません。これを行おうとすると、次のように返されますstatus code 400

Failed to deploy artifacts: Could not transfer artifact a.b:deploy-to-nexus:pom:1.0 from/to ..... (http://.....-releases): Failed to transfer file http://..../deploy-to-nexus/1.0/deploy-to-nexus-1.0.pom with status code 400

それがあなたを助けることを願っています。

于 2019-09-11T13:26:27.877 に答える