Используйте плагин maven exec с дефисом в аргументах - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь выполнить сборку npm из maven, но у меня возникают проблемы с получением правильных аргументов командной строки.

Я использую следующий фрагмент

<execution>
    <id>npm run build (compile)</id>
    <goals>
        <goal>exec</goal>
    </goals>
    <phase>compile</phase>
    <configuration>
        <executable>npm</executable>
        <workingDirectory>${my.source.directory}</workingDirectory>  
        <arguments>
            <argument>run</argument>
            <argument>build</argument>
            <argument>--base-href</argument>
            <argument>/my-base-href/</argument>
        </arguments>
    </configuration>
</execution>

Я пыталсянесколько вариантов <argument>, но ни один из них не работает.

<argument>--base-href</argument>
<argument>/my-base-href/</argument>
or
<argument>-base-href</argument>
<argument>/my-base-href/</argument>
or
<argument>"--base-href"</argument>
<argument>/my-base-href/</argument>
or
<argument><![CDATA[--base-href]]></argument>
<argument>/my-base-href/</argument>
or
<commandlineArgs>run build --base-href /my-base-href/</commandlineArgs> (instead of <arguments>)

leads to
$ npm build "/my-base-href/"
problem: missing '--base-href'
<argument>"--base-href /my-base-href/"</argument>

leads to
$ npm build
problem: missing '--base-href "/my-base-href/"'
<argument>&hyphen;&hyphen;base-href</argument>
<argument>/my-base-href/</argument>

leads to
problem: pom error, could not resolve entity named 'hyphen' (same with &dash;)
<argument>\-\-base-href</argument>
<argument>/my-base-href/</argument>
leads to
$ ng build "\-\-base-href" "/my-base-href/"
problem: escape chars ending up in command

Что здесь происходит?Почему maven использует аргумент, начинающийся с --, и как мне сделать его менее вкусным?

(Пробовал с windows 8.1, maven 3.3.9 и 3.5.4, плагин exec 1.3.9 и 1.6.0)

1 Ответ

0 голосов
/ 21 августа 2019

Я не уверен, если точно так же, но мне нужно было передать флаг --coverage для тестового запуска.Чтобы получить это, мне нужно было сначала дать --: npm run test -- --coverage

        <argument>run</argument>
        <argument>test</argument>
        <argument>--</argument>
        <argument>--coverage</argument>
...