使用maven将DB2JAR添加到JavaWebApp
我正在尝试使用Maven将以下db2 JAR添加到我的Java web应用程序中使用maven将DB2JAR添加到JavaWebApp,maven,Maven,我正在尝试使用Maven将以下db2 JAR添加到我的Java web应用程序中 db2jcc_license_cu.jar db2jcc_javax.jar db2jcc.jar 我正在按照这篇文章中的说明。。。 我想使用项目存储库中的静态解决方案。到目前为止我已经 在我的根目录中创建了一个名为lib的文件夹。在这里面 目录中有三个DB2JAR 将以下内容添加到我的pom文件中 我通过运行一个 java com.ibm.db2.jcc.DB2Jcc-version 我是否正确指定
db2jcc_license_cu.jar
db2jcc_javax.jar
db2jcc.jar
我正在按照这篇文章中的说明。。。
我想使用项目存储库中的静态解决方案。到目前为止我已经
我是否正确指定了此版本信息?有人能指出我做错了什么吗 我猜这些罐子没有pom.xml。因此发出警告。如果JAR得到打包并且应用程序正常工作,那么我想您没有问题。问题是您没有在“project maven存储库”(即文件夹
${project.basedir}/lib
中正确安装JAR)
Maven将jar文件存储在Maven存储库中(当您安装mvn时)。maven存储库具有精确的层次结构。以下是该结构的简化视图:
- 工件
+groupId
定义存储工件的文件夹路径(在存储库中)的第一部分artifactId
- 工件
是文件夹路径的第二部分version
- 工件
也是工件名称的后缀version
是工件名称artifactId
- 包装是工件扩展(默认为jar)
/.m2/repository
您试图设置的解决方案使用存储库的另一个位置:${project.basedir}/lib
,即使它不是默认的存储库位置,它仍然是一个maven存储库,因此maven希望在此位置下找到常用的maven存储库层次结构
这就是为什么您需要像maven存储库一样组织${project.basedir}/lib
文件夹。这一点在本部分中进行了解释:
使用Maven安装到项目回购
我建议使用Maven插件将JAR作为工件安装,而不是手动创建此结构。因此,要将工件安装到repo文件夹下的项目内存储库,请执行以下操作:
mvn安装:安装文件-DlocalRepositoryPath=lib-DcreateChecksum=true-dpacking=jar-Dfile=[your jar]-DgroupId=[…]-DartifactId=[…]-Dversion=[…]
如果选择这种方法,您将能够将pom中的存储库声明简化为:
回购
文件://${project.basedir}/lib
因此,您需要执行mvn安装
来创建${project.basedir}/lib
层次结构(您可以手动完成,但不建议这样做,而且容易出错)
在您的情况下,要运行的命令如下:(假设您将jar放在HOME_DIR中,并在${project.basedir}
中运行此命令)
mvn安装:安装文件-DlocalRepositoryPath=lib-DcreateChecksum=true-dpackage=jar-Dfile=/db2jcc_license_cu.jar-DgroupId=com.ibm.db2.jcc-DartifactId=db2jcc_license_cu-Dversion=3.8.47
您选择的方法有哪些优点:
- 没有maven设置的开发人员将在SCM系统下的项目源代码中提供这些库
- 您可以轻松地引用不在公共maven存储库中的JAR,而无需使用或
- 在
下有一个相当复杂的文件夹结构,对于不习惯使用maven的人来说,它看起来非常奇怪${project.basedir}/lib
- 您将在SCM下存储库(大量大型二进制文件)
lib
目录)。现在告诉maven用那些罐子。这里的groupId
、artifactdId
和version
是JFYI,因为它们不会被用来下载任何东西
此解决方案的优点是您不必构建maven存储库
<dependencies>
...
<dependency>
<groupId>com.ibm.db2.jcc</groupId>
<artifactId>licences</artifactId>
<version>1.0</version> <!-- Adjust this properly -->
<scope>system</scope>
<systemPath>${basedir}/lib/db2jcc_license_cu.jar</systemPath>
</dependency>
<dependency>
<groupId>com.ibm.db2.jcc</groupId>
<artifactId>db2jcc4</artifactId>
<version>1.0</version> <!-- Adjust this properly -->
<scope>system</scope>
<systemPath>${basedir}/lib/db2jcc4.jar</systemPath>
</dependency>
<dependency>
<groupId>com.ibm.db2.jcc</groupId>
<artifactId>db2jcc_javax</artifactId>
<version>1.0</version> <!-- Adjust this properly -->
<scope>system</scope>
<systemPath>${basedir}/lib/db2jcc_javax.jar</systemPath>
</dependency>
</dependencies>
...
com.ibm.db2.jcc
可以更精确地描述${project.basedir}/lib?Hi下的文件夹层次结构(如果有)。我在lib下没有文件夹层次结构,除了jar。上面帖子中的说明是关于x.y.z的。这让我有点困惑。它们没有包装。Maven不接他们。
<dependency>
<groupId>com.ibm.db2.jcc</groupId>
<artifactId>db2jcc</artifactId>
<version>3.8.47</version>
</dependency>
<dependency>
<groupId>com.ibm.db2.jcc</groupId>
<artifactId>db2jcc_license_cu</artifactId>
<version>3.8.47</version>
</dependency>
[WARNING] The POM for com.ibm.db2.jcc:db2jcc:jar:3.8.47 is missing, no dependency information available
[WARNING] The POM for com.ibm.db2.jcc:db2jcc_license_cu:jar:3.8.47 is missing, no dependency information available
<repository>
<id>repo</id>
<url>file://${project.basedir}/lib</url>
</repository>
<dependencies>
...
<dependency>
<groupId>com.ibm.db2.jcc</groupId>
<artifactId>licences</artifactId>
<version>1.0</version> <!-- Adjust this properly -->
<scope>system</scope>
<systemPath>${basedir}/lib/db2jcc_license_cu.jar</systemPath>
</dependency>
<dependency>
<groupId>com.ibm.db2.jcc</groupId>
<artifactId>db2jcc4</artifactId>
<version>1.0</version> <!-- Adjust this properly -->
<scope>system</scope>
<systemPath>${basedir}/lib/db2jcc4.jar</systemPath>
</dependency>
<dependency>
<groupId>com.ibm.db2.jcc</groupId>
<artifactId>db2jcc_javax</artifactId>
<version>1.0</version> <!-- Adjust this properly -->
<scope>system</scope>
<systemPath>${basedir}/lib/db2jcc_javax.jar</systemPath>
</dependency>
</dependencies>