java - Maven 和安装命令行程序

标签 java maven

用 Java 编写了一个命令行程序,使用 Maven 作为构建系统,从那里开始将程序作为命令使用的推荐方法是什么?

假设程序名为 Foo。在 foo 目录中,我可以运行 mvn package 来生成 target/foo-1.0-SNAPSHOT.jar,然后可以用 java -cp target/foo-1.0-SNAPSHOT.jar foo.Main %* 但该命令太长,用户无法键入。我需要了解在命令行中键入 foo 将运行该程序的地步。 mvn install 没有;它只是将 jar 复制到本地 maven 存储库。

将程序作为命令提供的推荐方法是什么?

最佳答案

您可以使用 Maven Assembler Plugin像这样:

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>appassembler-maven-plugin</artifactId>
            <version>1.10</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>assemble</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <programs>
                    <program>
                        <mainClass>sandbox.Main</mainClass>
                        <id>app</id>
                    </program>
                </programs>
            </configuration>
        </plugin>

运行mvn package会在${project.build.directory}/appassembler子文件夹的bin文件夹中生成一个windows(.bat)和unix shell脚本.

关于java - Maven 和安装命令行程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53521272/

相关文章:

java - Freemarker 配置问题(Maven 编译失败)

java - 什么是 endorseddirs 以及它如何在应用程序中使用?

linux - 使用安装在 Linux 机器上的 Jenkins 在 IE 驱动程序上运行测试

java - 组合与继承(如何理解 Java 中的 Thinking)

java - 使用 Apache POI 对单元进行着色

java - Java Home Project构想

java - 垃圾回收仅用于回收堆对象还是同时回收堆和堆栈中的对象?

c++ - 是否有 Maven 等效项可以解决 Linux 上 Cmake 的第 3 方依赖关系?

maven - Javalin 教程产生 "Unresolved reference: AtomicInteger"

java - ManyToMany 为空的 Ebean Search?