要么我遗漏了一些明显的东西,要么遗漏了Maven book和Maven Assembly Plugin's homepage,在描述如何编写自定义汇编描述符时,不要说明该文件的去向。这是我项目的一部分吗?它是否进入某个中央Maven配置目录?我是否必须在某处指定其位置?
答案 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旁边,它就可以了。在搜索网页之前我可能已经尝试过了......