2

記述子を使用してMavenでアセンブリを構築していますが、単純に次のことをしようとしています:

  1. 名前を変更せずにメイン プロジェクト アーティファクト (JAR) を含めます。
  2. すべてのプロジェクトの依存関係を含め、名前を変更します。

名前の変更形式:

${project.artifactId}-${project.version}.lib.${artifact.artifactId}.${artifact.extension}`

現在、私のアセンブリ記述子は次のようになっています。

<?xml version="1.0"?>
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">

    <id>default</id>

    <formats>
        <format>tar.gz</format>
        <format>zip</format>
    </formats>

    <dependencySets>
        <dependencySet>
            <useProjectArtifact>true</useProjectArtifact>
            <outputDirectory>/</outputDirectory>
            <excludes>
                <exclude>*:*</exclude>
            </excludes>
        </dependencySet>
        <dependencySet>
            <useProjectArtifact>false</useProjectArtifact>
            <outputDirectory>/</outputDirectory>
            <outputFileNameMapping>
                ${project.artifactId}-${project.version}.lib.${artifact.artifactId}.${artifact.extension}
            </outputFileNameMapping>
            <unpack>false</unpack>
        </dependencySet>
    </dependencySets>
</assembly>

残念ながら、メイン プロジェクトのアーティファクトをディストリビューションに入れることができないようです。私は何を間違っていますか?

4

1 に答える 1

2

ブロックを使用して<files>、プロジェクト アーティファクト自体を個別に含めることができます。

<!-- Include the project artifact itself. -->
<files>
    <file>
        <source>${project.build.directory}/${project.build.finalName}.${project.packaging}</source>
        <outputDirectory>/</outputDirectory>
    </file>
</files>

<!-- Include all dependent libraries. -->
<dependencySets>
    <dependencySet>
        <useProjectArtifact>false</useProjectArtifact>
        <outputDirectory>/</outputDirectory>
        <outputFileNameMapping>${project.artifactId}-${project.version}.lib.${artifact.artifactId}.${artifact.extension}</outputFileNameMapping>
        <unpack>false</unpack>
    </dependencySet>
</dependencySets>

(<source>上のものよりも正しい表現があるかもしれませんが、利用可能な Maven プロパティの完全なリストを見つけることは困難です。誰かがそれを知っている場合は、自由に編集してください!)

最後に、余談ですが、依存関係のいずれかに分類子がある場合は、どこかに追加${dashClassifier?}することを検討してください。そうしないと、分類子がファイル名から欠落します。<outputFileNameMapping>

于 2012-12-04T18:22:58.113 に答える