1

multimuduleプロジェクトがあります。モジュールの1つはアセンブリであり、コア(ライブラリ)と例を1つのzipに入れるための記述子があります。

<assembly>
<id>assembly</id>
<formats>
    <format>zip</format>
    <format>dir</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>

<dependencySets>
    <dependencySet>
        <useTransitiveDependencies>false</useTransitiveDependencies>
        <outputDirectory>/</outputDirectory>
    </dependencySet>
</dependencySets>

これは私のアセンブリであり、これはプラグイン構成です

<plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <descriptors>
                    <descriptor>assembly.xml</descriptor>
                </descriptors>
            </configuration>
            <executions>
                <execution>
                    <id>package-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins> 

結果としてzipが.m2フォルダーに正常にインストールされましたが、名前はassembly-ccp -....に変更する必要があります。名前をmy-projectに変更する必要があります。これは、プラグインの2行で実行できます。

<finalName>my-project</finalName>
<appendAssemblyId>false</appendAssemblyId>

ターゲットフォルダー(my-project.zipが表示されます)では問題ありませんが、結果のzipは.m2フォルダーにインストールされません。だから、問題はそれを私の.m2フォルダにインストールする方法ですか?(親プロジェクトから実行:クリーンインストール)

見つかった出力:

[INFO] Building Assebly
[INFO]    task-segment: [clean, install]
[INFO] ------------------------------------------------------------------------
[INFO] [clean:clean {execution: default-clean}]
[INFO] Deleting directory /home/dmitry/mbus/trunk/assembly/target
[INFO] [site:attach-descriptor {execution: default-attach-descriptor}]
[INFO] Preparing source:jar
[WARNING] Removing: jar from forked lifecycle, to prevent recursive invocation.
[INFO] No goals needed for project - skipping
[INFO] [source:jar {execution: default}]
[INFO] [assembly:single {execution: package-assembly}]
[INFO] Reading assembly descriptor: assembly.xml
[INFO] Processing DependencySet (output=/)
[WARNING] Cannot include project artifact: com.comcast.xcal.mbus:assembly:pom:CCP-LATEST-SNAPSHOT; it doesn't have an associated file or directory.
[INFO] Building zip: /home/dmitry/mbus/trunk/assembly/target/my-project.zip
[WARNING] Configuration options: 'appendAssemblyId' is set to false, and 'classifier' is missing.
Instead of attaching the assembly file: /home/dmitry/mbus/trunk/assembly/target/my-project.zip, it will become the file for main project artifact.
NOTE: If multiple descriptors or descriptor-formats are provided for this project, the value of this file will be non-deterministic!
[INFO] Processing DependencySet (output=/)
[INFO] Copying files to /home/dmitry/mbus/trunk/assembly/target/my-project.dir
[WARNING] Assembly file: /home/dmitry/mbus/trunk/assembly/target/my-project.dir is not a regular file (it may be a directory). It cannot be attached to the project build for installation or deployment.
[INFO] [install:install {execution: default-install}]
[INFO] Installing /home/dmitry/mbus/trunk/assembly/pom.xml to /home/dmitry/.m2/repository/com/mbus/assembly/CCP-LATEST-SNAPSHOT/assembly-CCP-LATEST-SNAPSHOT.pom
[INFO] [javadoc:jar {execution: default}]
[INFO] Not executing Javadoc as the project is not a Java classpath-capable package
[INFO] 
[INFO] 
4

1 に答える 1

1

.m2 リポジトリで発行される名前は常に${module.artifactId}-${module.version}.${module.extension}設定finalNameされ、パッケージはフォルダー内で適切に名前が変更されtargetます。

それを変更する2つの方法を見つけました:

  1. 実際には解決策ではありません: artifactId を変更します (ただし、これが私のプロジェクトで最終的に選択した解決策です)

  2. idアセンブリ XML で を設定します。

    assembly/resources.xml 内 -> <id>= 必要な接尾辞 (例: <id>myappid</id>)

    pom.xml maven-assembly-plugin ビルド セクションで、appendAssemblyIdtrueに設定

    結果は次のようになります。

    • ターゲット フォルダ内のファイル名 =${artifactId}-${version}-${assemblyId}.zip
    • .m2 リポジトリ フォルダー内のファイル = ターゲットと同じ
于 2013-10-16T08:04:10.947 に答える