Как я могу установить путь в этом плагине Maven?

Я новичок в плагинах Maven, и мне нужно, чтобы этот плагин работал, чтобы запустить инструмент sencha cmd для минимизации нашего JavaScript-приложения как часть ежедневного процесса сборки.

В настоящее время исполняемый тег имеет жестко заданный путь, но мне интересно, могу ли я указать путь в качестве переменной среды, а затем получить доступ к этой переменной среды в приведенном ниже коде, чтобы его можно было запустить на любой машине?

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.2.1</version>                    
    <executions>
        <execution>
            <id>sencha-compile</id>
            <phase>compile</phase>
            <goals>
                <goal>exec</goal>
            </goals>
            <configuration>
                <executable>C:\Sencha\Sencha\Cmd\4.0.2.67\sencha.exe</executable>
                <arguments>
                    <argument>app</argument>
                    <argument>build</argument>
                </arguments>
            </configuration>
        </execution>
    </executions>
</plugin>            

2 ответа

Посмотрите мой пример интеграции Sencha ExtJS 5 + Sencha Cmd 5 + Maven по адресу: https://github.com/dobromyslov/sencha-extjs-maven

Вы должны установить переменную окружения:

  • Экспорт в консоли через:

    $ export SENCHA_CMD = "/ path / to / your / Sencha / Cmd / 5.0.0.116 / sencha"

  • Также вы можете добавить это заявление на экспорт ~/.bashrc или же /etc/profile файл, чтобы сделать его постоянным.

  • Или добавьте новую переменную среды в Windows.

Установите среду сборки Sencha Cmd:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!-- Default build environment -->
    <sencha.env>production</sencha.env>
</properties>

<profiles>
    <!-- Development profile -->
    <profile>
        <id>dev</id>
        <activation>
            <property>
                <name>env</name>
                <value>development</value>
            </property>
        </activation>
        <properties>
            <sencha.env>testing</sencha.env>
        </properties>
    </profile>

    <!-- Production profile -->
    <profile>
        <id>prod</id>
        <activation>
            <property>
                <name>env</name>
                <value>production</value>
            </property>
        </activation>
        <properties>
            <sencha.env>production</sencha.env>
        </properties>
    </profile>
</profiles>

Затем используйте следующий плагин Maven:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.2.1</version>
    <executions>
        <execution>
            <id>sencha-compile</id>
            <phase>compile</phase>
            <goals>
                <goal>exec</goal>
            </goals>
            <configuration>
                <!-- Set path to your Sencha Cmd executable-->
                <executable>${env.SENCHA_CMD}</executable>
                <arguments>
                    <argument>-sdk</argument>
                    <argument>${basedir}/src/main/webapp</argument>
                    <argument>app</argument>
                    <argument>build</argument>
                    <argument>--clean</argument>
                    <argument>--environment</argument>
                    <argument>${sencha.env}</argument>
                    <argument>--destination</argument>
                    <argument>${basedir}/src/main/webapp/build</argument>
                </arguments>
            </configuration>
        </execution>
    </executions>
</plugin>

И беги

$ mvn compile

Чтобы ответить на ваш вопрос, вы можете ссылаться на системные переменные среды из файла maven pom с помощью следующего синтаксиса:${env.NAME_OF_VARIABLE}

Смотрите эту ссылку для более подробной информации: https://maven.apache.org/pom.html

Если вы назвали переменную среды PATH_TO_SENCHA_EXE Вы можете сослаться на это так:<executable>${env.PATH_TO_SENCHA_EXE}sencha.exe</executable>

В качестве альтернативы переменным среды вы можете рассмотреть возможность создания в вашем pom свойства, содержащего этот путь. Затем вы можете изменить значение, используемое для разных сред, передав новое значение для свойства в командной строке или загрузив файл свойств в pom, который может содержать это свойство. Здесь есть много вариантов.

Изменить: я обнаружил, что последнее предложение было рассмотрено на SO по следующей ссылке (и, вероятно, в других местах):

Чтение файла свойств из файла Maven POM

Другие вопросы по тегам