【发布时间】:2020-07-02 00:12:16
【问题描述】:
我最近在 Github 的包注册表上托管了一个 Maven 包,现在我正在尝试使用它。该包旨在提供各种应用程序使用的数据模型,允许我的团队对数据模型包进行更改,而不是更新共享它们的所有 Spring 应用程序中的模型。
我将依赖项放在需要数据模型包的应用程序的pom.xml 文件中,然后运行mvn install(我还必须修改我的 .m2/settings.xml 文件才能访问存储库)。我的印象是该软件包已安装,因为它记录了成功并显示在我的 IDE 的 maven 插件依赖项列表中。
现在我被困住了。到目前为止,我认为一旦安装了包,我就可以导入我需要的类,就像我一直使用 Maven 包一样。但是当我尝试这样做时,我的 IDE 找不到包。
我又开始查看数据模型包,想知道是否需要提供一些额外的元数据。具体来说,我想我可能需要提供一些模块描述符,但我不能确定这是否真的能让我更接近能够使用该包。
这是数据模型包的pom.xml。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.companyname</groupId>
<artifactId>data-model</artifactId>
<version>0.0.2-SNAPSHOT</version>
<name>Data-Model</name>
<properties>
<java.version>11</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.1.5.RELEASE</version>
</dependency>
</dependencies>
</project>
当我使用 Gradle 发布包时,我会得到以下日志输出:
11:05:23 AM: Executing task 'publishGprPublicationToGitHubPackagesRepository'...
Starting Gradle Daemon...
Gradle Daemon started in 1 s 63 ms
> Task :compileJava UP-TO-DATE
> Task :processResources UP-TO-DATE
> Task :classes UP-TO-DATE
> Task :bootJar UP-TO-DATE
> Task :generateMetadataFileForGprPublication
> Task :generatePomFileForGprPublication
> Task :publishGprPublicationToGitHubPackagesRepository
BUILD SUCCESSFUL in 16s
6 actionable tasks: 3 executed, 3 up-to-date
11:05:39 AM: Task execution finished 'publishGprPublicationToGitHubPackagesRepository'.
我运行mvn install时打印的日志很长,所以我不会发布它,但它不会产生任何错误,我可以看到它下载了datamodel jar并成功构建。它还显示在项目目录的外部库列表中。
数据模型的组 ID 与我想在其中使用它的应用程序的组 ID 相同(我的公司名称)。当我输入import com.companyname. 时,它会建议一些本地包,但无法识别数据模型。当我将鼠标悬停在红色文本上时,工具提示会显示 Cannot resolve symbol 'datamodel'
我现在需要做什么才能让我的应用程序从我创建的 maven 包中导入类?
【问题讨论】:
-
模型的模块是模块化的吗?(已经有
module-info.java)。另外,安装是指mvn install吗?您不需要部署要共享的工件吗?在您自己的机器上,您看到了什么错误以及您如何访问模型的依赖项? -
该模块在我第一次发布时没有
module-info.java文件,到现在仍然没有。我相信神器已经部署了?是的,我使用了mvn install~ 就错误而言,我本身并没有收到错误,但是当我在文件顶部键入 importcom.companyname.datamodel时,我想将依赖项导入它并没有找到类。 -
至于部署工件,我所做的只是将它发布到 GitHub 包注册表,不确定您是否是这个意思。
-
我已经编辑了我的问题以包含
pom.xml,如果没有指定包装,我理解它将默认为一个罐子。
标签: maven gradle maven-3 github-package-registry java-package