代码之家  ›  专栏  ›  技术社区  ›  James McMahon

我应该将Maven程序集插件的自定义程序集描述符放在哪里?

  •  15
  • James McMahon  · 技术社区  · 15 年前

    要么我错过了一些明显的东西,要么两者都错过了 Maven book 以及 Maven Assembly Plugin's homepage 在描述如何编写自定义程序集描述符时,不要说任何关于该文件必须去哪里的内容。它是我项目的一部分吗?它是否进入某个中央maven配置目录?我需要指定它的位置吗?

    2 回复  |  直到 15 年前
        1
  •  12
  •   Pascal Thivent    15 年前

    是的,您必须指定位置。根据 Configuration and Usage 第页,这样做:

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

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

        2
  •  1
  •   James McMahon    15 年前

    以一种迂回的方式,我终于找到了答案。第一, this page 关于间接共享程序集描述符给了您一些提示。

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

    [信息]正在搜索文件位置:/path/to/project/dependency-collection.xml

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

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

    [信息]无效的项目规范:“dependency collection.xml”。必须包含至少三个字段,用“:”分隔。

    …或者从一个maven工件加载它…

    [信息]解析类路径资源失败:classloader:classrealm[/plugins/org.apache.maven.plugins:maven assembly plugin:2.2-beta-2@48/thread:main,parent:classrealm[plexus.core,parent:null]]

    [信息]未能从类加载器解析类路径资源:dependency-collection.xml:classrealm[/plugins/org.apache.maven.plugins:maven程序集插件:2.2-beta-2@48/thread:main,parent:classrealm[plexus.core,parent:null]]

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

    [信息]从位置生成URL:dependency-collection.xml

    错误: java.net.畸形异常:无协议:dependency-collection.xml

    …或者从URL加载。

    很好,但我想这确实应该记录在某个地方。我刚把描述符文件放在epom.xml旁边,它就工作了。在搜索网页之前我可能已经尝试过了…