Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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 - Fatal编程技术网

强制maven始终从目标文件夹获取工件 情况

强制maven始终从目标文件夹获取工件 情况,maven,Maven,分割长期运行的构建作业会很好,尤其是在多模块项目中 编译所有内容mvn clean安装或mvn clean软件包 对每个模块执行单元测试mvn surefire:test 执行集成测试ant和stuff 将工件发布到远程存储库mvn my.own.tools:Publish plugin:Publish 执行构建后步骤(标记等)buildserver stuff 在某些构建环境中,如Atlassian Bambol,每个步骤都可能像前一个一样在另一个构建代理上执行。他们甚至可以各自拥有自己的本地

分割长期运行的构建作业会很好,尤其是在多模块项目中

  • 编译所有内容
    mvn clean安装
    mvn clean软件包
  • 对每个模块执行单元测试
    mvn surefire:test
  • 执行集成测试
    ant和stuff
  • 将工件发布到远程存储库
    mvn my.own.tools:Publish plugin:Publish
  • 执行构建后步骤(标记等)
    buildserver stuff
  • 在某些构建环境中,如Atlassian Bambol,每个步骤都可能像前一个一样在另一个构建代理上执行。他们甚至可以各自拥有自己的本地存储库。但是,可以将工作目录的所有文件复制到后续阶段的文件

    观察 Maven在查找本地存储库或远程存储库之前使用
    目标
    文件夹的内容。如果目标目录的内容是在特定运行期间由上一个
    阶段创建的,则这是正确的

    示例:
    mvn清洁安装surefire:test

    如果测试有依赖项,maven将首先查看在编译阶段创建的目标目录

    如果将命令一分为二,maven似乎根本无法识别
    目标
    文件夹

    示例:
    mvn干净安装;mvn surefire:测试

    现在,maven从本地存储库加载所有依赖项,如果没有,则从远程存储库加载所有依赖项

    问题
    • 在步骤2中,maven忽略目标文件夹中的内容,这些内容是在步骤1中创建的
    • 步骤2在与步骤1不同的生成服务器上运行。但是,步骤1中的整个文件结构(包括目标文件夹)已从步骤2复制到工作目录中。测试所依赖的工件不会从这些目录中取出。由于每个构建服务器都有自己的本地存储库,因此找不到它们,并且在远程存储库中从未上载过它们
    • 不幸的是,任何让整个beast更加模块化并将项目拆分的想法都是不可能的
    问题: 在任何情况下,如何强制maven从多模块项目的现有目标文件夹中加载依赖项?我知道maven在步骤2中不知道这些文件夹,因为它们不是在maven运行期间创建的。但我如何才能强迫maven查看这些文件夹是否存在

    更多相关问题;-)
    我们在第4步中的“发布插件”似乎工作得很好,并将工件从目标文件夹中上传出去。项目信息通过通常的maven属性收集在Mojo中。但是在步骤1中,有一些zip文件是由
    org.apache.maven.plugins:maven汇编插件创建的。虽然这些zip文件位于目标文件夹中,但找不到它们。现在maven尝试下载它们,这很有趣,因为它可以将它们放在手上进行上传。

    我真的不明白为什么要在不同的构建代理上运行不同的步骤?为什么不在一个构建代理上运行它们呢?它们是由竹子分发的,我不想为一个构建配置指定一个代理。这是baboo的工作方式,不幸的是,你不能强迫它对stage n+x使用与stage n相同的代理。那么,首先拆分构建可能是个坏主意。您可以将所有内容附加到maven生命周期。然后一个
    mvn clean deploy
    将完成您想要执行的所有步骤。通常,在花费大量时间进行所有测试之前检测编译失败是一个好主意。此外,如果在构建失败之前不发布工件,它还有一些优势。我很感激你的兴趣,但我们是故意做这种事的;-)我只是想了解情况。我的拙见是,你的方法将很难实施。我想到的唯一方法是为所有代理上使用的构建配置定义一个本地存储库。