Проблема перевода команды Java в профиль maven - PullRequest
0 голосов
/ 09 мая 2019

Используя mvn и maven-assembly-plugin, я создаю .jar с зависимостями и запускаю его так:

java -cp ../target/module-jar-with-dependencies.jar module.Launcher --project=example --network=toy_ags_network.sif

Я хотел создать профиль mvn, который делает именно это. Так в моем pom.xml я добавил это:

<profiles>
        <profile>
            <id>runExample</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>exec-maven-plugin</artifactId>
                        <version>1.6.0</version>
                        <executions>
                            <execution>
                                <phase>compile</phase>
                                <goals>
                                    <goal>java</goal>
                                </goals>
                                <configuration>
                                    <mainClass>module.Launcher</mainClass>
                                    <arguments>
                                        <argument>--project</argument>
                                        <argument>example</argument>
                                        <argument>--network</argument>                                      
                                        <argument>toy_ags_network.sif</argument>                              
                                    </arguments>
                                </configuration>
                            </execution>
                        </executions>
                        <configuration>
                            <mainClass>com.test.Startup</mainClass>
                            <cleanupDaemonThreads>false</cleanupDaemonThreads>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

Итак, когда я сделаю: mvn compile -P runExample, я получу те же результаты. Кажется, однако, что некоторые классы из зависимости не загружены полностью или что-то еще, и это вызывает исключения и т. Д., И когда я не включаю этот конкретный код, который использует эти другие классы, тогда все в порядке. Я хочу убедиться, что моим путем выше я включил все зависимости, например, что команда java и команда maven равны .

редактирует

Мне удалось создать простой плагин, который ведет себя так же, как и команда java, выполнив mvn exec:exec:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.6.0</version>
    <configuration>
        <executable>java</executable>
        <arguments>
            <argument>-cp</argument>
            <argument>target/module-jar-with-dependencies.jar</argument>
            <argument>module.Launcher</argument>
            <argument>--project</argument>
            <argument>example</argument>
            <argument>--network</argument>
            <argument>toy_ags_network.sif</argument>
        </arguments>
    </configuration>
</plugin>

Но я хочу профиль с этим плагином внутри, это то, чего у меня до сих пор нет!

1 Ответ

0 голосов
/ 09 мая 2019

Правильная конфигурация для pom.xml:

<profiles>
        <profile>
            <id>runExample</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>exec-maven-plugin</artifactId>
                        <version>1.6.0</version>
                        <executions>
                            <execution>
                                <phase>compile</phase>
                                <goals>
                                    <goal>exec</goal>
                                </goals>
                                <configuration>
                                    <executable>java</executable>
                                    <arguments>
                                        <argument>-cp</argument>
                                        <argument>target/module-jar-with-dependencies.jar</argument>
                                        <argument>module.Launcher</argument>
                                        <argument>--project</argument>
                                        <argument>example</argument>
                                        <argument>--network</argument>                                      
                                        <argument>toy_ags_network.sif</argument>                              
                                    </arguments>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

Таким образом, выполнение: mvn compile -P runExample совпадает с:

java -cp ../target/module-jar-with-dependencies.jar module.Launcher --project=example --network=toy_ags_network.sif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...