gpt4 book ai didi

maven - 如何在 Java 中导入用户创建的包?

转载 作者:行者123 更新时间:2023-12-03 05:23:25 25 4
gpt4 key购买 nike

我最近在 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并成功构建。它还显示在项目目录的外部库列表中。
external libraries
数据模型的组 id 与我想在其中使用它的应用程序的组 id 相同(我的公司名称)。当我输入 import com.companyname.它建议一些本地包,但不识别数据模型。当我将鼠标悬停在红色文本上时,工具提示会显示 Cannot resolve symbol 'datamodel'我现在需要做什么,以便我的应用程序可以从我创建的 maven 包中导入类?

最佳答案

终于想通了。
在稍微调整包的 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 中的错误)我做错了什么。
最近,我只需执行以下操作即可在依赖应用程序中看到包的更新:
  • 在数据模型包中,运行 mvn clean然后 mvn deploy
  • 在依赖应用程序中,运行 mvn install
  • 关于maven - 如何在 Java 中导入用户创建的包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62687062/

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