gpt4 book ai didi

java - 我为我的 java 库添加了 CLI 支持,我怎样才能方便地将它公开给我的库用户?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:46:02 27 4
gpt4 key购买 nike

我维护着一个 Java 库,该库最近添加了对 CLI 命令的支持,但我无法理解如何实际公开此支持。

我如何提供一个简单的跨平台命令来处理所有需要的依赖项?

在我自己的测试中,我要么依赖于从 IntelliJ 运行的 Junit 测试,要么依赖于 Maven exec 插件。 IntelliJ 和 Maven 管理所有依赖项,但我不能指望我的库用户也这样做。我正在考虑为 Windows 用户提供一个 .bat 文件和一个 alias对于 Linux 用户,它充当以下快捷方式:

java -cp all;the;jars.jar my.package.CliSupportingClass 命令--选项值

有没有更好的办法?

最佳答案

This article使用 appassembler-maven-plugin 解释得很好组装所有依赖项并生成脚本助手和 maven-assembly-plugin将其全部打包为压缩文件,例如 zip 和 tar。

本文使用其中一个插件的 2.4 版,我在其中更新为最新的 3.1.0。我们用例的唯一区别是 <descriptor>标签现在嵌套在 <descriptors> 中标签。

将这两个插件作为标准构建插件或配置文件包含在内:

<profiles>
<profile>
<id>standalone-cli</id>
<build>
<plugins>
<!-- appassembler-maven-plugin -->
<!-- maven-assembly-plugin -->
</plugins>
</build>
</profile>
</profiles>

appassembler-maven-plugin 为我们收集所有依赖项并为 windows 和 unix 生成脚本助手:

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.8.1</version>
<configuration>
<repositoryLayout>flat</repositoryLayout>
<repositoryName>lib</repositoryName>
<showConsoleWindow>true</showConsoleWindow>
<platforms>
<platform>unix</platform>
<platform>windows</platform>
</platforms>
<programs>
<program>
<mainClass>org.simplejavamail.cli.SimpleJavaMail</mainClass>
<id>sjm</id>
</program>
</programs>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>assemble</goal>
</goals>
</execution>
</executions>
</plugin>

ma​​ven-assembly-plugin 然后生成存档:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<descriptors>
<descriptor>src/assembly/standalone-cli-descriptor.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>assemble-all</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>

最后 standalone-cli-descriptor.xml 告诉 maven-assembly-plugin 什么应该包含在文件中以及什么 type of archives应该产生:

<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>standalone-cli</id>
<formats>
<format>tar</format>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${project.basedir}</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>LICENSE-2.0.txt</include>
<include>NOTICE.txt</include>
<include>RELEASE.txt</include>
</includes>
</fileSet>
<fileSet>
<directory>${project.build.directory}/appassembler</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>**/**</include>
</includes>
</fileSet>
</fileSets>
</assembly>

关于java - 我为我的 java 库添加了 CLI 支持,我怎样才能方便地将它公开给我的库用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53621044/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com