maven - 对 IntellijIDEA 和 Maven 的问题

标签 maven jar intellij-idea java

过去几年我一直在使用 XCode 和 Objective-C 工作,但我知道一旦我必须转向 Eclipse 或类似的 Java 项目。案例是,我并不是特别喜欢Eclipse,这导致我使用了一个新的开发环境,即IntellijIDEA。但是,我一点也不熟悉应该如何处理文件以及如何添加外部库,也不知道我的 CLASSPATH 应该是什么。我在项目中的哪里保存这些外部库?我也在使用 Maven,但我不太清楚为什么要使用依赖项。如果我将 .jar 包含在我的类路径中 - 或者存储我的资源、类等的任何位置 - 为什么会有依赖项?我有一个正在工作的项目,但我不太愿意发布或使用它,同时也不确定我在那里做了什么。我了解如何在 IntelliJ 中添加外部 .jar 文件,但是如何在项目中添加这些外部库?

到目前为止我是这样做的: 假设我已经下载了一个 Maven 项目,并且想在其他项目中使用它。我使用 mvn install 然后(在我的模块设置中)我将目标文件夹中的 .jar 添加为外部库。 IntelliJ 是否保留对该 .jar 文件的引用?如果该 .jar 位于我的下载文件夹中,并且我想将该项目传输到服务器,那么此连接是否已断开?

最佳答案

在 Maven 项目中,您可以在 pom.xml 文件中添加您所依赖的库,不需要将它们添加到 IDE 中的其他位置和/或通过 IDE 将它们链接到您的项目。只需向您的 pom.xml 文件添加一个新的依赖项即可。

maven 将(如果没有另外设置)所有 Artifact (库)存储在一个文件夹中:~/.m2/,这是您保存依赖项的位置,也是您的本地 Maven 存储库。

Maven 让您的生活更轻松,因为您不必再​​将 jar 添加到您的类路径中。确保您的 Maven 项目确实被 IDE 识别为 Maven 项目(通常它在项目 View 中是一个很小的 ​​M)。

这里有一个关于 Maven 的简短介绍,一开始对我帮助很大: http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html ,特别是为了了解生命周期。

正如您提到的mvn install:您构建的 Artifact 将部署到本地 Maven 存储库,您拥有的所有其他项目都可以使用此 Artifact 并将引用您部署的最新 Artifact 。

您可以像任何其他项目一样运行您的项目,单击运行按钮并选择您的主类。

如果您的项目生成可运行的 jar,您还可以在 pom.xml 文件中定义它。请参阅How can I create an executable JAR with dependencies using Maven?创建一个 jar,其中包含一个 jar 中的所有依赖项/库,或 How to create a runnable jar with maven that includes dependencies in a separate "lib" folder (not an uber jar)用于将 deps/libs 放入单独文件夹的可运行 jar。无论如何,在这两种情况下,Maven 都会相应地生成 MANIFEST 文件(可执行 jar 所需的文件)。

关于maven - 对 IntellijIDEA 和 Maven 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19245271/

相关文章:

java - 在 JRuby 中调用自定义 Java 类

build - mvn :assembly and mvn:package 之间有什么区别

java - org.postgis.PGgeometry 无法转换为 org.postgis.PGgeometry

java - 如何解决 "inner assignments should be avoided"

maven - 如何设置 Appium UI 测试 maven 项目与 Gitlab CI 一起测试 Android App?

maven - 错误 : Could not find local repository for 2. X.X

java - ClassNotFoundException - 没有意义

java - 使用 Maven 配置在 Eclipse 中为 Hadoop 作业设置 Java 堆空间

java - Maven - 依赖于多模块聚合器项目

java - IntelliJ 警告 : Unchecked generics array creation for varargs parameter