0

我最近在 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 包中导入类?

4

1 回答 1

0

终于想通了。

在稍微调整包的 gradle.properties 并添加之后

<distributionManagement>
   <repository>
     <id>github</id>
     <name>GitHub OWNER Apache Maven Packages</name>
     <url>https://maven.pkg.github.com/OWNER/REPOSITORY</url>
   </repository>
</distributionManagement>

在 pom.xml 中,我仍然无法成功地将依赖项添加到 Maven,尽管我可以在列表中看到它。我最终做了什么来修复它似乎是与 IDE 相关的一个可能的错误,但我不能肯定地说。我已经尝试过使缓存失效和重新启动 IDE、Maven 清理然后运行安装的各种组合,但在我从 pom.xml 中删除依赖项、运行全新安装然后添加它之后,终于能够让包正常工作再次运行安装一次。

更新:由于某种原因,它再次损坏,为了再次访问包类以进行导入,我必须(从包中)运行,mvn clean然后mvn deploy从依赖应用程序中执行上面列出的相同步骤并删除pom.xml 的依赖关系,然后重新运行mvn install

这似乎是一个很大的痛苦,而且似乎(如果这不是 IntelliJ 中的错误)我做错了什么。

最近,我只需执行以下操作即可在依赖应用程序中看到包的更新:

  1. 在数据模型包中,mvn clean然后运行mvn deploy
  2. 在依赖的应用程序中,运行mvn install
于 2020-07-08T22:53:21.820 回答