You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Maven Assembly插件将单个XML文件作为项目构件?

Absolutely! You can use the Maven Assembly Plugin to output your single XML file directly as a project artifact—you just need to adjust your assembly descriptor file and plugin configuration to skip creating a compressed archive. Here's how to do it:

Step 1: Update Your Assembly Descriptor

Modify your assembly/master.xml to target only your XML file and use a directory format (we'll tweak the plugin config later to output it as a single file):

<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
    <id>xml-artifact</id>
    <!-- Use directory format instead of zip/tar -->
    <formats>
        <format>dir</format>
    </formats>
    <fileSets>
        <!-- Point to your XML file's location -->
        <fileSet>
            <directory>${project.basedir}/src/main/resources</directory> <!-- Replace with your XML's actual directory -->
            <includes>
                <include>your-target.xml</include> <!-- Replace with your XML filename -->
            </includes>
            <outputDirectory>/</outputDirectory> <!-- Output directly to the root of the assembly -->
        </fileSet>
    </fileSets>
</assembly>

Step 2: Adjust the Assembly Plugin Configuration

Update your pom.xml plugin config to rename the output to a single XML file (matching your project's coordinate naming convention) and skip appending the assembly ID:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
        <execution>
            <id>create-distribution</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
            <configuration>
                <descriptors>
                    <descriptor>assembly/master.xml</descriptor>
                </descriptors>
                <!-- Name the output file to match your project's artifact naming -->
                <finalName>${project.artifactId}-${project.version}</finalName>
                <!-- Don't append the assembly ID to the filename -->
                <appendAssemblyId>false</appendAssemblyId>
                <!-- Output directly to the target directory -->
                <outputDirectory>${project.build.directory}</outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

When you run mvn package, you'll find your XML file (e.g., my-project-1.0.0.xml) in the target directory, ready to use as your project artifact.

A Simpler Alternative

If your only goal is to output a single XML file as an artifact, you don't even need the Assembly Plugin. The maven-resources-plugin or a direct build configuration is more lightweight:

<build>
    <!-- Copy the XML file directly to the target directory -->
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>your-target.xml</include>
            </includes>
            <targetPath>${project.build.directory}</targetPath>
            <filtering>false</filtering>
        </resource>
    </resources>

    <!-- Optional: Install the XML file to your local Maven repository -->
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-install-plugin</artifactId>
            <executions>
                <execution>
                    <id>install-xml-artifact</id>
                    <phase>install</phase>
                    <goals>
                        <goal>install-file</goal>
                    </goals>
                    <configuration>
                        <file>${project.build.directory}/your-target.xml</file>
                        <groupId>${project.groupId}</groupId>
                        <artifactId>${project.artifactId}</artifactId>
                        <version>${project.version}</version>
                        <packaging>xml</packaging>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

This setup copies your XML to target during the process-resources phase, and the install plugin adds it to your local repo as a proper XML artifact.


内容的提问来源于stack exchange,提问作者Raynigon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:51:41