【问题标题】:Can I create empty directories while packaging using maven-assembly-plugin?我可以在使用 maven-assembly-plugin 打包时创建空目录吗?
【发布时间】:2014-07-23 11:48:11
【问题描述】:

我想在使用 maven-assembly-plugin 进行打包时创建空目录结构。我成功地包含了所有文件,但没有创建空文件,

opt/SP/myprod/bin/*  (contains files)
opt/SP/myprod/lib/*  (contains files)
opt/SP/myprod/conf/* (contains files)
var/SP/myprod/run    (Empty directories)
var/SP/myprod/log    (Empty directories)
var/SP/myprod/tmp    (Empty directories)

下面是我的汇编文件,

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

<fileSets filtered="true" encoding="UTF-8">

    <fileSet>
        <directory>${run.dir}</directory>
        <fileMode>755</fileMode>
    </fileSet>

    <fileSet>
        <directory>${tmp.dir}</directory>
        <fileMode>755</fileMode>
    </fileSet>

    <fileSet>
        <directory>${log.dir}</directory>
        <fileMode>755</fileMode>
    </fileSet>

    <fileSet>
        <directory>${basedir}/config</directory>
        <outputDirectory>${install.dir}/config</outputDirectory>
        <fileMode>755</fileMode>
    </fileSet>

    <fileSet>
        <directory>${basedir}/bin</directory>
        <outputDirectory>${install.dir}/bin</outputDirectory>
        <fileMode>755</fileMode>
    </fileSet>

    <fileSet>
        <directory>${basedir}/images</directory>
        <outputDirectory>${install.dir}/images</outputDirectory>
        <fileMode>755</fileMode>
    </fileSet>

    <fileSet>
        <directory>${basedir}/package-scripts</directory>
        <outputDirectory>${install.dir}/package-scripts</outputDirectory>
        <fileMode>755</fileMode>
    </fileSet>

    <fileSet>
        <directory>${project.build.directory}</directory>
        <outputDirectory>${install.dir}/lib</outputDirectory>
        <includes>
            <include>myfile.jar</include>
        </includes>
        <fileMode>755</fileMode>
    </fileSet>

    <fileSet>
        <directory>${project.build.directory}/lib</directory>
        <outputDirectory>${install.dir}/lib</outputDirectory>
        <fileMode>755</fileMode>
    </fileSet>

</fileSets>

所以,我尝试了其中一篇博客中推荐的简单“目录”标签,但没有成功。

谁能帮帮我?

【问题讨论】:

  • 上次我不得不使用 maven 打包一个空目录时,我最终在其中留下了一个空文件名 DO_NOT_REMOVE(确保我永远不会有一个 real 文件里面的那个名字...)
  • 尝试为这些文件集定义
  • @SergeBallesta - 嗯,似乎是一个选择。已经尝试了 outputDirectory 标记,甚至指定了一个有效的目录,添加了一个排除过滤器。一切似乎都不是一个干净的解决方案。考虑添加 ant-run-plugin 并可以使用 ant 命令 mkdir 创建文件夹。

标签: java maven maven-plugin


【解决方案1】:

请注意,@khmarbaise 的回答不会排除所有子文件夹,您需要使用更强的通配符:

<fileSets>
    <fileSet> <!-- Create empty directory -->
        <outputDirectory>coredumps</outputDirectory>
        <excludes><exclude>**/*</exclude></excludes>
    </fileSet>
</fileSets>

发现于How do I include an empty directory in a maven assembly?

【讨论】:

    【解决方案2】:

    你可以在这里使用这样的东西:

    <fileSets>
      <fileSet>
         <outputDirectory>/an-other-empty-folder</outputDirectory>
         <directory>${project.basedir}/target</directory>
         <excludes>
           <exclude>*</exclude>
         </excludes>
      </fileSet>
    </fileSets>
    

    【讨论】:

    • 需要使用 **/* 否则子目录中的文件可能会被复制到文件夹中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 2020-06-13
    • 2014-03-12
    相关资源
    最近更新 更多