我有一个使用 Maven 创建 Utility jar 的项目,它存储在本地存储库中。我想将该 jar 导入到我的应用程序项目中。因为 Maven 现在将 BOOT-INF 放在类路径的前面,所以我将以下内容放入 Utility Jar 中以生成可导入版本。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>jar</goal>
</goals>
<phase>package</phase>
<configuration>
<!--to be imported on other projects-->
<classifier>importable</classifier>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
它是 1.0 版,所以它在存储库中创建以下内容......
utility-1.0-importable.jar
utility-1.0.jar
...和其他一些东西。 可导入的 jar 不会将 BOOT-INF 放在我的类目录的前面,所以这就是我想包含在我的应用程序 pom.xml 中的 jar。
我只是不知道如何引用它,因为下面引用了 utility-1.0.jar,它有 BOOT-INF,因此找不到类。
<dependency>
<groupId>com.acme</groupId>
<artifactId>utility</artifactId>
<version>1.0</version>
</dependency>
如何引用可导入的罐子? (这都是全新的,所以都使用了最新版本。)
我一直在浏览大量关于包括依赖的 Maven 项目的帖子,但它们似乎并没有解释究竟什么进入了依赖项目,什么进入了应用程序项目。
看看文章https://www.baeldung.com/maven-artifact-classifiers,下面的依赖应该适合你:
<dependency>
<groupId>com.acme</groupId>
<artifactId>utility</artifactId>
<version>1.0</version>
<classifier>importable</classifier>
</dependency>
要在您的应用程序项目中包含 Utility JAR 的可导入版本,您可以在依赖项中指定分类器,如下所示:
<dependency>
<groupId>com.acme</groupId>
<artifactId>utility</artifactId>
<version>1.0</version>
<classifier>importable</classifier>
</dependency>
这将解析 JAR 的可导入版本并将其包含在您的应用程序项目中。注意需要在元素中指定分类器
如果 JAR 的可导入版本不在您的本地存储库中,您可能需要先通过在实用程序项目上运行 mvn install 来安装它,以便它在您的本地存储库中可供应用程序项目解析。