【问题标题】:Maven assembly plugin chmod output folderMaven 程序集插件 chmod 输出文件夹
【发布时间】:2011-05-17 19:10:23
【问题描述】:

我正在尝试像这样使用 maven-assembly 插件来构建我的项目 JAR 的 zip 以及运行它所需的所有库:

        <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.2.1</version>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <descriptors>
<descriptor>src/main/assembly/exportWithDepends.xml</descriptor>
                            </descriptors>
                            <finalName>myname</finalName>
                            <appendAssemblyId>false</appendAssemblyId>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

我的程序集如下所示:

<assembly>
    <id>jar-with-dependencies</id>
    <formats>
        <format>zip</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <dependencySets>
        <dependencySet>
            <unpack>false</unpack>
            <scope>runtime</scope>
            <outputDirectory>lib</outputDirectory>
            <useProjectArtifact>true</useProjectArtifact>
            <fileMode>755</fileMode>
        </dependencySet>
    </dependencySets>
    <files>
        <file>  
<source>${project.build.directory}/${project.build.finalName}.jar</source>
        </file>
    </files>
</assembly>

这可以正常工作并生成正确的 zip。

然后,dependencySet 上的 fileMode 标志为 LIB 内的每个元素提供 755 CHMOD。问题是,实际的 LIB 文件夹本身保持 777。有没有办法让 LIB 文件夹也得到 755?

让maven做它不想做的事情总是让我难过:(

【问题讨论】:

    标签: java maven maven-assembly-plugin


    【解决方案1】:

    这真的很奇怪,但是跟随pom.xml 的sn-p 会将0755 模式设置为程序集的所有 目录。不过,我认为这不是很可靠(面向未来),因为很明显,maven 作者打算使用著名的 Unix 八进制表示法来指定目录访问模式,不是十进制等效。 p>

            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <archiverConfig>
                        <!-- 493D == 0755, seems to be assembly plugin bug -->
                        <defaultDirectoryMode>493</defaultDirectoryMode>
                    </archiverConfig>
                </configuration>
    

    原始信用必须在这里:https://issues.apache.org/jira/browse/MASSEMBLY-494

    【讨论】:

    • 这仍然适用于 2014 年 4 月使用 maven-assembly-plugin:2.4
    【解决方案2】:

    我自己没有尝试过,所以我不能说它是否适用于目标目录或只是添加到目标目录的目录,但你应该真的尝试一下

     <directoryMode>755</directoryMode>
    

    docs

    【讨论】:

    • 我确实尝试过这个,它似乎只是在 lib.. 内部获取目录。这很酷,但不是我想要的 :(
    【解决方案3】:

    我不认为 maven-assembly-plugin 现在可以做到这一点。所以我只是在 bash 脚本中进行了更改...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-07
      • 2012-12-30
      • 2010-12-12
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多