我可以更改 dir 格式 maven 程序集的根目录吗?

Can I change the root directory for dir format maven assemblies?

我正在使用 "dir" 格式的程序集描述符来生成分解的可分发文件。目前,这会将我包含的文件放在名为 "target/${project.build.finalName}" 的目录中。

我希望这个目录以不同的方式命名。理想情况下 "target/${project.artifactId}",本质上是删除版本组件。

想要进行此更改的原因是我将需要在离散管道步骤中引用该存档中的文件,并且在路径中包含该版本会带来可维护性问题。

提供的程序集描述符的简化版本:

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

  <fileSets>
    <fileSet>
      <directory>${project.basedir}/src/main/resources</directory>
      <outputDirectory/>
      </excludes>
    </fileSet>
  </fileSets>
</assembly>

我目前的根目录如下:

target/myArtifactId-1.0.0-SNAPSHOT/assembledResources

我想到达

target/myArtifactId/assembledResources

baseDirectory 和朋友只影响根目录内的路径,仍然给我留下一个包含版本号的路径,如:

target/myArtifactId-1.0.0-SNAPSHOT/myArtifactId/assembledResources

在您的 maven maven-assembly-plugin 中将 <finalName> 配置为 ${project.artifactId}

注意: 在下面的示例中,将 <descriptor>src/assembly/dist.xml</descriptor> 的位置更改为您的位置。

例如:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.1.0</version>
    <configuration>
        <descriptors>
            <descriptor>src/assembly/dist.xml</descriptor>
        </descriptors>
        <finalName>${project.artifactId}</finalName>
        <appendAssemblyId>false</appendAssemblyId>
    </configuration>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>

我假设您不希望 "preparation" 附加到名称中,所以我添加了 <appendAssemblyId>false</appendAssemblyId>