简体   繁体   English

在Maven pom.xml中使用本地jar的问题

[英]Problems using local jar in maven pom.xml

I have a project i export to jar file and install with maven: 我有一个导出到jar文件并使用maven安装的项目:

mvn install:install-file -Dfile=/home/myuser/workspace/libs/mylib.jar -DgroupId=br.com.mylib -DartifactId=mylib -Dversion=1.0 -Dpackaging=jar

In other project i just import in pom.xml: 在其他项目中,我只是导入pom.xml:

<dependency>
            <groupId>br.com.mylib</groupId>
            <artifactId>mylib</artifactId>
            <version>1.0</version>
        </dependency>

This works fine, if i use this setup in pom.xml of "mylib": 如果我在“ mylib”的pom.xml中使用此设置,则可以正常工作:

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>br.com.mylib</groupId>
  <artifactId>mylib</artifactId>
  <version>1.0-SNAPSHOT</version>
  <name>MY LIB</name>

Now i want to change for 2.0 version, like this: 现在我想更改为2.0版本,如下所示:

  <version>2.0</version>

But when i remove the SNAPSHOT word nothing works, if i use "1.0" without SNAPSHOT i can't import this library in another project, the error is : ClassNotFoundException like jar aren't imported. 但是,当我删除SNAPSHOT字时,没有任何效果,如果我在没有SNAPSHOT的情况下使用“ 1.0”,则无法在另一个项目中导入此库,错误是:未导入jar之类的ClassNotFoundException。

My pom.xml of "mylib" project: 我的“ mylib”项目的pom.xml:

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>br.com.mylib</groupId>
  <artifactId>mylib</artifactId>
  <version>2.0</version>
  <name>MYLIB</name>
  <description>any description here</description>
  <properties>
        <org.springframework.version>3.0.6.RELEASE
        </org.springframework.version>
    </properties>
    <dependencies>

  <dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4</version>
</dependency>


  <!-- JASPER REPORT IMPORTS -->

        <dependency>
            <groupId>net.sourceforge.barbecue</groupId>
            <artifactId>barbecue</artifactId>
            <version>1.5-beta1</version>
        </dependency>


        <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>5.0.1</version>
        </dependency>

        <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports-fonts</artifactId>
            <version>4.0.0</version>
        </dependency>

        <dependency>
            <groupId>xml-apis</groupId>
            <artifactId>xml-apis</artifactId>
            <version>1.4.01</version>
        </dependency>
        <dependency>
            <groupId>xerces</groupId>
            <artifactId>xercesImpl</artifactId>
            <version>2.10.0</version>
        </dependency>


        <!-- FIM JASPER RESPORT IMPORTS -->

        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-api</artifactId>
            <version>2.1.6</version>
        </dependency>

        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-impl</artifactId>
            <version>2.1.6</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>


        <dependency>
            <groupId>javax.persistence</groupId>
            <artifactId>persistence-api</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>

        <!-- HIBERNATE -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>3.6.10.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>3.6.10.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.1.0.Final</version>
        </dependency>
        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib-nodep</artifactId>
            <version>2.2.2</version>
        </dependency>
        <dependency>
            <groupId>javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.12.1.GA</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>asm</groupId>
            <artifactId>asm-commons</artifactId>
            <version>3.1</version>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>20040616</version>
        </dependency>

        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>

        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3</version>
        </dependency>

        <dependency>
            <groupId>org.primefaces</groupId>
            <artifactId>primefaces</artifactId>
            <version>3.5</version>
        </dependency>

        <dependency>
            <groupId>javax.annotation</groupId>
            <artifactId>jsr250-api</artifactId>
            <version>1.0</version>
        </dependency>

    </dependencies>

    <repositories>
        <repository>
            <id>java.net2.m2</id>
            <name>Java.net m2 repo</name>
            <url>http://download.java.net/maven/2</url>
        </repository>
            <repository>
            <id>prime-repo</id>
            <name>PrimeFaces Maven Repository</name>
            <url>http://repository.primefaces.org</url>
            <layout>default</layout>
        </repository>
    </repositories>
    <build>
        <finalName>jwebbuild</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>2.5</version>
                <configuration>
                    <targetJdk>1.7</targetJdk>
                </configuration>
            </plugin>       

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>

        </plugins>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
    </build>

    <packaging>war</packaging>
</project>

There are several issues here: 这里有几个问题:

  1. @SergeyPauk is correct. @SergeyPauk是正确的。 the "packaging" should be "jar", or removed at all as "jar" is the default. “包装”应为“罐子”,或者因为默认为“罐子”而应完全删除。

  2. did you make sure you built the "mylib" in version:2.0-snapshot, BEFORE you tried to use it as dependency in another project? 您确定要在另一个项目中将其用作依赖项之前,确保在版本2.0快照中构建了“ mylib”吗? in "mylib"'s pom I see that the version is 1.0-SNAPSHOT. 在“ mylib”的pom中,我看到版本是1.0-SNAPSHOT。 If you want to change to 2.0, then first of all you have to change mylib itself to 2.0, build it and install to the local repo, and only then try to use it as dependency in another project. 如果要更改为2.0,则首先必须将mylib本身更改为2.0,进行构建并将其安装到本地存储库中,然后才尝试将其用作其他项目中的依赖项。

  3. the right way to use maven's versions is to use SNAPSHOT version during development, eg X-SNAPSHOT, and only after you finish development (ie releasing the product) you change the version to X 使用maven版本的正确方法是在开发过程中使用SNAPSHOT版本,例如X-SNAPSHOT,只有在完成开发(即发布产品)后,才将版本更改为X

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM