将Java命令转换为Maven配置文件时出现问题

时间:2019-05-09 09:58:43

标签: java maven maven-assembly-plugin exec-maven-plugin

使用mvnmaven-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相等

编辑

通过运行mvn exec:exec,我设法拥有了一个行为与Java命令相同的简单插件:

<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 :(得分:0)

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