使用maven将DB2JAR添加到JavaWebApp

使用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 我是否正确指定

我正在尝试使用Maven将以下db2 JAR添加到我的Java web应用程序中

db2jcc_license_cu.jar  
db2jcc_javax.jar   
db2jcc.jar
我正在按照这篇文章中的说明。。。

我想使用项目存储库中的静态解决方案。到目前为止我已经

  • 在我的根目录中创建了一个名为lib的文件夹。在这里面 目录中有三个DB2JAR
  • 将以下内容添加到我的pom文件中
  • 我通过运行一个

    java com.ibm.db2.jcc.DB2Jcc-version


    我是否正确指定了此版本信息?有人能指出我做错了什么吗

    我猜这些罐子没有pom.xml。因此发出警告。如果JAR得到打包并且应用程序正常工作,那么我想您没有问题。

    问题是您没有在“project maven存储库”(即文件夹
    ${project.basedir}/lib
    中正确安装JAR)

    Maven将jar文件存储在Maven存储库中(当您安装mvn时)。maven存储库具有精确的层次结构。以下是该结构的简化视图:

    • 工件
      groupId
      +
      artifactId
      定义存储工件的文件夹路径(在存储库中)的第一部分
    • 工件
      version
      是文件夹路径的第二部分
    • 工件
      version
      也是工件名称的后缀
    • artifactId
      是工件名称
    • 包装是工件扩展(默认为jar)
    默认情况下,maven使用位于
    /.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,而无需使用或
    缺点:

    • ${project.basedir}/lib
      下有一个相当复杂的文件夹结构,对于不习惯使用maven的人来说,它看起来非常奇怪
    • 您将在SCM下存储库(大量大型二进制文件)

    另一个解决方案是在手之前下载这些JAR,并将它们放在与您的项目相对的位置(如
    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>