我在哪里为Maven Assembly插件添加自定义程序集描述符?

时间:2009-10-15 12:47:41

标签: maven-2

要么我遗漏了一些明显的东西,要么遗漏了Maven bookMaven Assembly Plugin's homepage,在描述如何编写自定义汇编描述符时,不要说明该文件的去向。这是我项目的一部分吗?它是否进入某个中央Maven配置目录?我是否必须在某处指定其位置?

2 个答案:

答案 0 :(得分:12)

是的,您必须指定位置。根据{{​​3}}页面,这是通过以下方式完成的:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptors>
            <descriptor>src/main/assembly/src.xml</descriptor>
          </descriptors>
        </configuration>
        [...]
</project>

实际上,我建议使用src/main/assembly作为位置。

答案 1 :(得分:1)

以某种迂回的方式,我最终能够找到答案。首先,关于共享汇编描述符的this page间接为您提供了一些提示。

我的第一个错误是在我的插件配置中使用descriptorRef而不是descriptor。当我修复它,并创建了上面链接的页面上显示的目录结构时,我得到了一系列错误消息,揭示了插件如何尝试解析你给它的描述符名称:

  

[INFO]搜索文件位置:/path/to/project/dependency-collection.xml

     

[INFO]文件:/path/to/project/dependency-collection.xml不存在。

所以,把它放在项目的根目录中应该有效......

  

[INFO]无效的工件规范:'dependency-collection.xml'。必须包含至少三个字段,以“:”分隔。

...或从Maven神器中加载......

  

[INFO]无法解析类路径资源:来自classloader的/assemblies/dependency-collection.xml:ClassRealm [/plugins/org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-2@48/ thread:main,parent:ClassRealm [plexus.core,parent:null]]

     

[INFO]无法解析类路径资源:来自类加载器的dependency-collection.xml:ClassRealm [/plugins/org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-2@48/thread:main ,parent:ClassRealm [plexus.core,parent:null]]

...或者把它放在插件的类路径上(我猜这是预定义描述符的位置)......

  

[INFO]从位置构建URL:dependency-collection.xml

     

错误:   java.net.MalformedURLException:无协议:dependency-collection.xml

...或从网址加载。

很好,但我认为这应该记录在某个地方。我只是将描述符文件放在epom.xml旁边,它就可以了。在搜索网页之前我可能已经尝试过了......