8

私は maven-antrun-plugin を使用して Ant で一連の作業を行い、最終的には zip ファイルになります。zip ファイルを Maven サーバー (Artifactory) にデプロイしたいと考えています。maven-antrun-portion は意図したとおりに機能し、zip ファイルを正常に作成します。ただし、展開は次のエラー メッセージで失敗します。

org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.6:deploy (default-deploy) on project projectname: The packaging for this project did not assign a file to the build artifact

私のPOMファイルは次のとおりです。

<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.company.division</groupId>
    <artifactId>projectname</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <parent>
        <groupId>com.company.product</groupId>
        <artifactId>parentproject</artifactId>
        <version>1.0.0</version>
    </parent>

    <distributionManagement>
        <snapshotRepository>
            <id>artifactory</id>
            <name>artifactory-snapshots</name>
            <url>http://localartifactoryserver/artifactory/libs-snapshot-local</url>
            <uniqueVersion>false</uniqueVersion>
        </snapshotRepository>
    </distributionManagement>

    <dependencies>
        <!-- Some dependencies... -->
    </dependencies>

    <build>
        <plugins>
            <!-- Compiler plugin -->
            <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>
                    <encoding>UTF8</encoding>
                    <optimize>true</optimize>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.6</version>
                <executions>
                    <execution>
                        <id>compile</id>
                        <phase>compile</phase>
                        <configuration>
                            <target>
                                <!-- Do lots of other stuff with Ant. -->

                                <!-- Create a zip file. -->
                                <zip basedir="mydir" destfile="${WORKSPACE}/MyZip.zip" />
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <groupId>${project.groupId}</groupId>
                    <artifactId>${project.artifactId}</artifactId>
                    <version>${project.version}</version>
                    <packaging>zip</packaging>
                    <file>MyZip.zip</file>
                    <url>${project.distributionManagement.snapshotRepository.url}</url>
                </configuration>
              </plugin>
        </plugins>
    </build>
</project>

これを (親 POM から) 呼び出すとmvn -U -pl projectname clean deploy、デプロイ フェーズ中に前述のエラーが発生します。私が間違っていること、またはこれを修正する方法を誰かが知っていますか?

4

3 に答える 3

12

私のために働いた解決策(それが理想的かどうかはわかりませんが、かなりハックっぽいようです)は、deploy:deploy-file目標に切り替えることでした:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-deploy-plugin</artifactId>
    <version>2.6</version>
    <goals>
        <goal>deploy-file</goal>
    </goals>
    <configuration>
        <repositoryId>artifactory</repositoryId>
        <packaging>zip</packaging>
        <generatePom>true</generatePom>
        <url>${project.distributionManagement.snapshotRepository.url}</url>
        <artifactId>${project.artifactId}</artifactId>
        <groupId>${project.groupId}</groupId>
        <version>${project.version}</version>
        <file>${WORKSPACE}/MyZip.zip</file>
    </configuration>
</plugin>

明示的に呼び出します。

mvn -U -X -pl projectname clean install deploy:deploy-file
于 2011-06-22T13:46:02.523 に答える
1

zip ファイルにコメントを追加する方法を探しているときに、この質問を見つけました。デプロイはうまくいきましたが、nexus に投稿するための maven リリースに問題がありました。以下の解決策は私の問題を解決しました。空のzipアセンブリを作成し、それをantタスクのzipファイルに置き換えるだけで、コメントをzipファイルに追加できました。このようにしてアーティファクトが生成され、推移的ではありません。

<?xml version="1.0" encoding="UTF-8"?>
<assembly>
<id>${project.build.finalName}</id>
<formats>
    <format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>

<fileSets>
    <fileSet>
        <directory>${project.build.directory}/MyStuff/emptydir</directory>
        <outputDirectory></outputDirectory>
        <useDefaultExcludes>true</useDefaultExcludes>
    </fileSet>
</fileSets>

        <plugin>
            <!--                 make an assembly (zip the LxBase) for the distribuition -->
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
                <execution>
                    <id>docs-assembly</id>
                    <phase>package</phase>
                    <configuration>
                        <appendAssemblyId>false</appendAssemblyId>
                        <descriptors>
                            <descriptor>src/main/assembly/assemble.xml</descriptor>
                        </descriptors>
                    </configuration>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.8</version>
            <executions>
                <execution>
                    <id>zip-artifacts</id>
                    <phase>package</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                    <configuration>
                        <target>
                            <zip destfile="${project.build.directory}/MyStuff-${project.version}.zip" update="true" comment="This is my comment...">
                                <fileset dir="${project.build.directory}/MyStuff" />
                            </zip>
                        </target>
                    </configuration>
                </execution>
            </executions>
        </plugin>
于 2018-07-16T21:37:14.517 に答える