我已将JAR复制到src\main\webapp\WEB-INF\lib
我用eclipse。如果我将罐子逐个添加到Project-> Java构建路径 - >添加罐子,然后我做Project-> Maven->更新项目配置,它们将被Maven删除。 Eclipse显示错误,其中包含“xxx无法解析”。
Env:
Eclipse Java EE IDE for Web Developers.
Version: Indigo Service Release 1
Build id: 20110916-0149
m2e - Maven Integration for Eclipse 1.0.100.20110804-1717
注意:我不想创建自己的Maven存储库。它只会使用一次。
我该怎么办?
答案 0 :(得分:18)
并非所有库都可以在公共Maven存储库中找到,例如您自己的库或专有库。无论如何,首先你可以search the Maven Repository,也许其中有一些在那里。
如果它们确实不存在,并且您不想安装Nexus或Artifactory,则可以选择以下两种方法之一:
将jar安装在本地存储库缓存中,无需创建特殊存储库。请参阅instructions on mkyong。
另一种方法是使用系统依赖,你只需要在文件系统中找到一个到达Jar的路径。这是一种不太推荐的方法,但如果你真的想要它会起作用。这是official documentation。
答案 1 :(得分:2)
添加一个Systems Dependency。
如果你想将这个(这使用jquantlib作为例子)添加到maven本地仓库使用:
mvn install:install-file -Dfile=./jquantlib-0.2.4.jar -DgroupId=org.jquantlib -DartifactId=jquantlib -Dversion=0.2.4 -Dpackaging=jar
为了做到这一点,我使用批处理文件
@echo off
cd lib
CMD /C "mvn install:install-file -Dfile=./jquantlib-0.2.4.jar -DgroupId=org.jquantlib -DartifactId=jquantlib -Dversion=0.2.4 -Dpackaging=jar"
CMD /C "mvn install:install-file -Dfile=./jquantlib-helpers-0.2.4.jar -DgroupId=org.jquantlib -DartifactId=jquantlib-helpers -Dversion=0.2.4 -Dpackaging=jar"
CMD /C "mvn install:install-file -Dfile=./jquantlib-samples-0.2.4-ubber.jar -DgroupId=org.jquantlib -DartifactId=jquantlib-ubber -Dversion=0.2.4 -Dpackaging=jar"
CMD /C "mvn install:install-file -Dfile=./jquantlib-samples-0.2.4.jar -DgroupId=org.jquantlib -DartifactId=jquantlib-samples -Dversion=0.2.4 -Dpackaging=jar"
CMD /C "mvn install:install-file -Dfile=./ta-lib-0.4.0.jar -DgroupId=com.tictactec -DartifactId=ta-lib -Dversion=0.4.0 -Dpackaging=jar"
您可以在其他系统上使用类似的脚本文件。
答案 2 :(得分:0)
我认为不应该使用系统依赖方法,除非你没有任何其他选择,那是因为你在这里失去了整个'构建可移植性的东西'。 当然,您可以将您的罐子与项目的源文件一起存储在源代码管理系统中,但我认为这不是一个好的方法......
仅使用安装:install-file不够好 - 这确实会将正确格式的jar部署到本地存储库中,但是当您移动到另一台计算机并开始在那里构建项目时会发生什么? 你需要再次这样做。
所以,如果您不想安装nexus / artifactory(我认为这是最好的解决方案),您可能应该创建另一个存储库(仅在某些服务器上的文件系统中),并部署那里的罐子(您可以使用mvn install:install-file,如此处所示,然后只复制整个树)。现在,您可以配置apache Web服务器并通过http访问包含所有jar的目录。我不相信它比nexus / artifactory方法更好,但是如果你熟悉apache web服务器,它可能会更容易一些。 为了让您的maven了解这个新存储库,您需要编辑%MAVEN_HOME%\ conf \ settings.xml文件
答案 3 :(得分:0)
要添加不在本地存储库中的外部JAR文件,只需右键单击主源文件夹,然后从构建路径菜单中选择:“configure build path”,然后导航到libraries选项卡并单击“添加外部JAR文件”。接下来,找到要添加为库的JAR(或zip)文件,然后单击“确定”。
恭喜,您现在已成功将外部JAR(或zip)添加到构建路径中,现在可以从项目中的该JAR文件导入任何类,而不会抛出错误Picture How-To :) http://hostthenpost.org/uploads/541be8420657320c74489ff8d456ad08.png
答案 4 :(得分:0)
至少有三种方法可以将第三方JAR添加到Maven项目中。
虽然上面已经建议了方法1和2,但我将重点介绍第三种方法,我发现它更清洁,不需要任何mvn命令,并且可以从任何IDE中直接使用。
步骤1 :在pom.xml中添加本地“虚拟”存储库的位置
<dependency>
<groupId>com.cloudera.impala</groupId>
<artifactId>impala-frontend</artifactId>
<version>0.1-SNAPSHOT</version>
</dependency>
这里“虚拟”存储库位置是我的项目目录的“ lib”文件夹
第2步:将jar依赖项添加到pom.xml
<artifactId>-<version>.jar
选择任何groupId,但请确保artifactId和版本的格式为/src/main/resources/lib/com/cloudera/impala/impala-frontend/0.1-SNAPSHOT/
(第三方jar的名称)
第3步:根据本地“虚拟”存储库中第2步中提到的groupId,artifactId和版本创建文件夹结构。因此,在这种情况下,文件夹指令应为[INFO] Downloading from repo: file:C:\Users\skumar\eclipse-workspace\chdQueryBuilder/src/main/resources/lib/com/cloudera/impala/impala-frontend/0.1-SNAPSHOT/maven-metadata.xml
[INFO] Downloading from repo: file:C:\Users\skumar\eclipse-workspace\chdQueryBuilder/src/main/resources/lib/com/cloudera/impala/impala-frontend/0.1-SNAPSHOT/impala-frontend-0.1-SNAPSHOT.pom
[WARNING] The POM for com.cloudera.impala:impala-frontend:jar:0.1-SNAPSHOT is missing, no dependency information available
[INFO] Downloading from repo: file:C:\Users\skumar\eclipse-workspace\chdQueryBuilder/src/main/resources/lib/com/cloudera/impala/impala-frontend/0.1-SNAPSHOT/impala-frontend-0.1-SNAPSHOT.jar
[WARNING] Could not validate integrity of download from file:C:\Users\skumar\eclipse-workspace\chdQueryBuilder/src/main/resources/lib/com/cloudera/impala/impala-frontend/0.1-SNAPSHOT/impala-frontend-0.1-SNAPSHOT.jar: Checksum validation failed, no checksums available
[WARNING] Checksum validation failed, no checksums available from repo for file:C:\Users\skumar\eclipse-workspace\chdQueryBuilder/src/main/resources/lib/com/cloudera/impala/impala-frontend/0.1-SNAPSHOT/impala-frontend-0.1-SNAPSHOT.jar
[INFO] Downloaded from repo: file:C:\Users\skumar\eclipse-workspace\chdQueryBuilder/src/main/resources/lib/com/cloudera/impala/impala-frontend/0.1-SNAPSHOT/impala-frontend-0.1-SNAPSHOT.jar (7.0 MB at 79 MB/s)
[INFO]
将您的jar放在版本文件夹中并构建您的项目。 您将获得以下输出,将您的“虚拟”存储库视为您的第3方jar的提供者。
class A(models.Model):
name = models.CharField(primary_key=True, max_length=50)
permission = models.CharField(max_length=50)
def __str__(self):
return f"{self.name}: {self.permission}"
class B(models.Model):
A_name = models.ManyToManyField(A)