如何在 Java 中导入用户创建的包?
How do I Import a user created package in Java?
我最近在 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
时打印的日志很长所以我不会 post 它,但它不会产生任何错误,我可以看到它下载数据模型 jar 并成功构建。它还显示在项目目录的外部库列表中。
数据模型的组 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 clean 然后 运行ning 安装的各种组合,但在我从 [=36= 中删除依赖项后终于能够让包工作了], 运行 全新安装,然后再次添加并 运行 再安装一次。
更新:出于某种原因,它又坏了,为了再次访问包 类 进行导入,我不得不(从包中)运行 mvn clean
然后 mvn deploy
然后,从相关应用程序中,执行上面列出的相同步骤并从 pom.xml 中删除依赖项,然后重新 运行 mvn install
.
这似乎是一个很大的痛苦,而且似乎(如果这不是 IntelliJ 中的错误)我做错了什么。
最近我已经能够通过执行以下操作在依赖应用程序中看到包的更新:
- 在数据模型包中,运行
mvn clean
然后 mvn deploy
- 在依赖应用程序中,运行
mvn install
我最近在 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
时打印的日志很长所以我不会 post 它,但它不会产生任何错误,我可以看到它下载数据模型 jar 并成功构建。它还显示在项目目录的外部库列表中。
数据模型的组 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 clean 然后 运行ning 安装的各种组合,但在我从 [=36= 中删除依赖项后终于能够让包工作了], 运行 全新安装,然后再次添加并 运行 再安装一次。
更新:出于某种原因,它又坏了,为了再次访问包 类 进行导入,我不得不(从包中)运行 mvn clean
然后 mvn deploy
然后,从相关应用程序中,执行上面列出的相同步骤并从 pom.xml 中删除依赖项,然后重新 运行 mvn install
.
这似乎是一个很大的痛苦,而且似乎(如果这不是 IntelliJ 中的错误)我做错了什么。
最近我已经能够通过执行以下操作在依赖应用程序中看到包的更新:
- 在数据模型包中,运行
mvn clean
然后mvn deploy
- 在依赖应用程序中,运行
mvn install