Maven程序集:包含与baseDirectory相同级别的文件

时间:2013-01-13 09:08:39

标签: maven maven-assembly-plugin

我正在使用程序集插件将带有artifactId杀手应用程序的swing应用程序打包到自定义程序集描述符。

程序集工作正常,我可以在程序集内的/killer-app/目录中包含我想要的任何内容。

killer-app-archive.zip
 \- killer-app
    \- whatever ...

问题是我必须在归档内的/killer-app/文件夹的同一级别包含另一个文件。

killer-app-archive.zip
 \- killer-app
 |  \- whatever ...
 \- launch.bat

我一直在尝试使用

  

< includeBaseDirectory&GT假LT; / includeBaseDirectory>

但只是删除/killer-app/文件夹,我必须保留该文件夹。

1 个答案:

答案 0 :(得分:8)

可以解决您问题的三个步骤:

  • baseDirectory更改为../
  • 使用FileSets添加额外文件。
  • 使用DependencySet添加项目工件(useProjectArtifact = true)

这应该可以解决您的问题。这是一个例子:

<?xml version="1.0" encoding="UTF-8"?>
<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>my-assembly</id>
    <baseDirectory>../</baseDirectory>
    <formats>
        <format>zip</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <dependencySets>
        <dependencySet>
            <unpack>true</unpack>
            <useProjectArtifact>true</useProjectArtifact>
        </dependencySet>
    </dependencySets>
    <fileSets>
        <fileSet>
            <directory>path/to/resource</directory>
            <includes>
                <include>**/*.bat</include>
            </includes>
            <outputDirectory>/</outputDirectory>
        </fileSet>
    </fileSets>
</assembly>