当前位置: 首页 > 知识库问答 >
问题:

java - 为什么maven 命令行 指定execution-id不生效?

东方栋
2024-01-11

Maven 3.3.1新增一个特性 可以使用@后缀指定id。
我的pom.xml文件的部分代码如下:

  <execution>    <id>cds.build</id>    <goals>      <goal>cds</goal>    </goals>    <configuration>      <commands>          <command>deploy --to h2 --dry &gt; "${project.basedir}/src/main/resources/schema-h2.sql"</command>      </commands>    </configuration>  </execution>  <execution>    <id>schema.sql</id>    <goals>        <goal>cds</goal>    </goals>    <configuration>      <commands>          <command>deploy --to postgres --dry &gt; srv/src/main/resources/schema.sql</command>      </commands>    </configuration>  </execution>

有两个相同的goal但是对应执行的命令参数不一样,我执行了 mvn cds:cds@schema.sql 但是没有按照预期执行 <id>schema.sql</id>中的命令

PS D:\VSCode\CAPTEST\TEST\bookshop\srv> mvn cds:cds@schema.sql[INFO] Scanning for projects...[INFO] [INFO] -------------------------< customer:bookshop >--------------------------[INFO] Building bookshop 1.0.0-SNAPSHOT[INFO]   from pom.xml[INFO] --------------------------------[ jar ]---------------------------------[INFO][INFO] --- cds:2.4.1:cds (schema.sql) @ bookshop ---[INFO] CdsMojo: Identified D:\VSCode\CAPTEST\TEST\bookshop as reactor base directory.[INFO] CdsMojo: Using directory containing a .cdsrc.json as working directory: D:\VSCode\CAPTEST\TEST\bookshop[INFO] CdsMojo: Searching npx.cmd on local file-system.[INFO] CdsMojo: Found D:\Program Files\nodejs\npx.cmd[INFO] CdsMojo: Executing [D:\Program Files\nodejs\npx.cmd, -c, cds version] in working directory D:\VSCode\CAPTEST\TEST\bookshop[INFO] CdsMojo: Using configured working directory: D:\VSCode\CAPTEST\TEST\bookshop[INFO] CdsMojo: Executing [D:\Program Files\nodejs\npx.cmd, -c, cds deploy --to h2 --dry > \"D:\VSCode\CAPTEST\TEST\bookshop\srv/src/main/resources/schema-h2.sql\"] in working directory D:\VSCode\CAPTEST\TEST\bookshop[INFO] CdsMojo:[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time:  22.225 s[INFO] Finished at: 2024-01-09T15:58:16+08:00[INFO] ------------------------------------------------------------------------

从日志中来看maven识别到了我的参数@schema.sql
[INFO] --- cds:2.4.1:cds (schema.sql) @ bookshop ---
但最终执行的命令还是第一个execution中的命令,这是因为什么?因为我对maven并不是很了解,会有哪些配置影响到命令行的执行

我调换过这两个execution的位置,发现实际执行的是第一个execution中的命令,也就是说命令行中指定execution-id并没有实际生效。

共有1个答案

叶弘深
2024-01-11

这个回答里或许就是原因,某些目标不支持多配置执行?上述回答里提供了一些解决方法,我只是想搞懂为什么指定id不可以,没有实际的业务需求,且我目前的知识和时间不足以支撑我继续研究,所以暂时放弃了。

 类似资料:
  • 本文向大家介绍通过什么命令指定命令提示符?相关面试题,主要包含被问及通过什么命令指定命令提示符?时的应答技巧和注意事项,需要的朋友参考一下 答案: \u:显示当前用户账号 \h:显示当前主机名 \W:只显示当前路径最后一个目录 \w:显示当前绝对路径(当前用户目录会以~代替) $PWD:显示当前全路径 $:显示命令行’$'或者’#'符号 #:下达的第几个命令 \d:代表日期,格式为 week da

  • 我的mavensettings.xml如下,如你所见,没有超文本传输协议repository url,所有repository url都是以https开头的。 当我执行 gradle 构建时,它说我使用不安全的协议。事实上,我从来没有在我的专家设置中使用过http协议.xml。我们可以看到所有存储库 URL 都以“https://”开头。任何人都可以给我一些建议吗? 我的gradle版本是7.4部

  • 问题内容: 为什么在使用sudo时找不到命令“ bundle”: 但是在不使用sudo时确实存在: 我问的原因是我正在关注https://github.com/gitlabhq/gitlab- recipes/tree/master/install/centos ,它指出要使用sudo。 所述添加标志…引发’bundle:命令未找到’错误,但显示“此帐户当前不可用”。 问题答案: 使用和不检查的值

  • 为什么在使用sudo时找不到命令"bundle": 但不使用sudo时不存在: 我问的原因是我在https://github.com/gitlabhq/gitlab-recipes/tree/master/install/centos,它表示使用sudo。 我尝试添加一个标志,如使用$sudo bundle exec所述。。。引发“bundle:command not found”错误,但获取“此

  • 问题内容: PhantomJS驱动程序是否支持命令行参数?我需要使用PhantomJS驱动程序运行Selenium测试并禁用Web安全。我努力了: 但这似乎不起作用。PhantomJSDriver是否允许传递命令行参数? 问题答案: 您可以使用PhantomJSDriverService.WebSecurity属性指定PhantomJS的命令行选项,而不是将其传递为。 这是在Selenium 2.

  • 问题内容: 我想知道为什么Java在设计时没有C ++中可用的指令,从而可以更好地控制从定义类的包外部可以使用哪些方法和实例变量。 我没有看到任何实际的原因,也没有看到任何具体的缺点,这似乎只是设计问题,但是如果将其添加到语言中,则不会造成任何问题。 问题答案: 这是我的首要原因: 不需要朋友。很方便,但不是必需的 朋友支持错误的设计。如果一个班级要求朋友访问另一个班级,那么您做错了。(见上文,方