为Maven Assembly插件创建一个新的格式选项

时间:2012-05-02 17:06:23

标签: maven maven-plugin iso maven-assembly-plugin iso9660

Maven Assembly插件允许在程序集描述符中指定不同的格式。如何开发新格式以便支持它?

我想创建一个ISO映像,而不是它已经支持的zip,jar或tar文件。我找到了一个将创建ISO映像(https://github.com/stephenc/java-iso-tools)的插件,但不是作为程序集插件的一部分,因此非常乐意使用它,甚至扩展该插件。

我基本上希望能够在我的汇编描述符中执行以下操作:

<assembly>
  <id>cd-image</id>
  <formats>
    <format>iso</format>
  </formats>
  <!-- Rest of descriptor here -->
</assembly>

我也希望能够在创建的存档中删除额外的间接级别,这样当我声明文件应该在存档的根目录中时,它确实存在。如果它是一个tar文件,这将是一个焦油炸弹,但对于ISO映像将是一个有用的功能。

2 个答案:

答案 0 :(得分:1)

最好的事情是在问题跟踪系统中提出问题:http://jira.codehaus.org/browse/MASSEMBLY此外,为了更好地支持这一点,请查看maven-assembly-plugin的源代码,可能会尝试生成一个补丁,它实现了你喜欢的功能。 但是我怀疑它会被开发者接受,因为你引用的工具是基于GPL的软件,它不能集成在Apache许可的部分中。如果他们后悔这样的话,我不会感到惊讶。但可能是我错了。试一试吧。 此外,建议一个新的Maven插件可能是一个好主意,这个插件正是为了这个目的(maven-iso-pugin?)。

非常重要的是你应该检查Maven Central,因为已存在用于此类目的的http://search.maven.org/#search|ga|1|iso9660-maven-plugin maven插件。

答案 1 :(得分:0)

iso9660-maven-plugin(java-iso-tools的一部分)现在直接支持这一点。您必须将它作为扩展名添加到pom.xml中,并作为maven-assembly-plugin的依赖项添加:

    <build>
    <extensions>
        <extension> <!-- Adds "iso" as an assembly format. -->
            <groupId>com.github.stephenc.java-iso-tools</groupId>
            <artifactId>iso9660-maven-plugin</artifactId>
            <version>2.0.1</version>
        </extension>
    </extensions>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                    <configuration>
                       ...
                    </configuration>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>com.github.stephenc.java-iso-tools</groupId>
                    <artifactId>iso9660-maven-plugin</artifactId>
                    <version>2.0.1</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

然后您可以在程序集描述符中使用<format>iso</format>

我看到原始提问者是将此功能添加到iso9660-maven-plugin的人。谢谢!