在 Maven 中创建 2 个 Jars(可移植和依赖)的最佳实践

Best practices when creating 2 Jars (Portable and Dependency) in Maven

我创建了一个小工具来签署 PDF。现在我想要 2 个 Jar,一个 Portable Jar,您可以在其中执行 Jar,仅此而已,还有一个 Jar 可以加载到其他项目中并使用。

我目前的做法:

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.3.0</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <finalName>BatchPDFSign</finalName>
                    <archive>
                        <manifest>
                            <mainClass>BatchPDFSign.Main</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <appendAssemblyId>false</appendAssemblyId>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
            </plugin>
        </plugins>
    </build>

如您所见,我的第一种方法是使用 maven-assembly-plugin 创建一个 Uber Jar,并使用 maven-compiler-plugin 创建一个普通 Jar。

但我并没有失去我完全错误的感觉,还有更好的方法来做到这一点。我对 Maven 很陌生。

tl;dr:创建一个包含所有依赖项的 Jar 和一个适合一次性上传到 maven 的 Jar 的最佳方法是什么?

通常,您会创建一个包含两个模块的多模块项目:

  • 图书馆。
  • 可执行 jar。

可执行 jar 将库用作依赖项,并向 运行 添加所需的内容(可能是 Main class 和一些配置)。

那么这个库也可以被其他人使用。