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

M'λ*_*'λ' 2 maven maven-assembly-plugin

我正在使用程序集插件将我的swing应用程序与artifactId killer-app打包并使用自定义程序集描述符.

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

killer-app-archive.zip
 \- killer-app
    \- whatever ...
Run Code Online (Sandbox Code Playgroud)

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

killer-app-archive.zip
 \- killer-app
 |  \- whatever ...
 \- launch.bat
Run Code Online (Sandbox Code Playgroud)

我一直试着玩

<includeBaseDirectory>假</ includeBaseDirectory>

但这只是删除/killer-app/我必须保留的文件夹.

asg*_*oth 8

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

  • 改变baseDirectory../
  • 使用FileSet添加额外的文件.
  • 使用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>
Run Code Online (Sandbox Code Playgroud)