Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让maven组装插件复制工件?_Maven_Maven Assembly Plugin - Fatal编程技术网

如何让maven组装插件复制工件?

如何让maven组装插件复制工件?,maven,maven-assembly-plugin,Maven,Maven Assembly Plugin,我有一个Maven汇编脚本,可以复制资源来构建我们的应用程序。我需要将一些war文件从单独的外部项目复制到输出中的/webapps目录中。似乎找不到做这件事的魔法命令 我尝试使用向程序集添加依赖项集。如果我将“mywarfile”作为war依赖项添加到范围为compile或runtime的项目中,则可以实现这一点。不幸的是,我的项目产生了一个war,而maven war插件将外部MyWar文件作为一个覆盖,这是我不想要的 如果我将外部war依赖项的范围设置为“提供”或“测试”,则程序集将失败并发

我有一个Maven汇编脚本,可以复制资源来构建我们的应用程序。我需要将一些war文件从单独的外部项目复制到输出中的/webapps目录中。似乎找不到做这件事的魔法命令

我尝试使用
向程序集添加依赖项集。如果我将“mywarfile”作为war依赖项添加到范围为compile或runtime的项目中,则可以实现这一点。不幸的是,我的项目产生了一个war,而maven war插件将外部MyWar文件作为一个覆盖,这是我不想要的

如果我将外部war依赖项的范围设置为“提供”或“测试”,则程序集将失败并发出警告:

[警告]此工件包含筛选器中从未触发以下模式: 'com.mygroup:mywarfile'


我只想让程序集将工件从本地repo复制到程序集输出。如何做到这一点而不打乱项目的其他部分?

maven assembly插件不用于复制。复制依赖项的更好方法是可以复制依赖项等。如果您正在谈论部署到Tomcat等,那么您应该更深入地了解或了解哪个似乎更适合该任务。

我没有尝试过,但是您可以尝试使用
maven war plugin
overlay
配置的
exclude
功能,将从属war文件的内容排除在war项目中。修改了文档中的代码段

...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <overlays>
            <overlay>
              <groupId>com.example.projects</groupId>
              <artifactId>warToBeExcluded</artifactId>
              <excludes>
                <exclude>*</exclude>
              </excludes>
            </overlay>
          </overlays>
        </configuration>
      </plugin>
    </plugins>
  </build>
...
。。。
org.apache.maven.plugins
maven战争插件
2.2
com.example.projects
瓦托贝除外
*
...

Um,复制是maven assembly插件的主要目的。文件集、DependencySets及其其余部分仅用于将部分应用程序复制到最终版本中。必须使用一个单独的maven依赖插件会破坏汇编插件的功能。另外,如果你的程序集输出是一个zip文件,它也不起作用。很抱歉,根据maven assembly插件的名称,它将工件和/或文件组装到一个归档文件中,但并不打算将工件从一个位置复制到另一个位置。如果您想从构建(多模块或存储库)中复制工件,依赖插件正是您所需要的。@user237815:程序集插件只能处理项目中已有的文件。它不是为了添加不可用的内容,所以我认为依赖插件是可行的。这是可行的,在我发布这个问题之前,这是我们的解决办法。不过,这有点像黑客。