开发者

How do I add jars needed to compile a maven project if they were never built with a pom?

I'm just starting with maven, coming from years of working with Ant. I'm trying a basic task now, building a simple project that requires some libraries from a vendor. I have the jars in src\main\resources\VENDORNAME. When I run mvn compile it fails on compilation saying the libraries don't exist. I can't seem to add these as dependencies because I don't know their version number and as they are proprietary I can't find them in ibiblio or elsewher开发者_开发百科e. Without these Jars I can't compile my classes.

Is there a way to use jars that didn't follow Maven's convention? I might not understand maven correctly, so any guidance is welcome. Much appreciated for any responses.


I would write your own POM file for these jars and add them to your repository. Doesn't have to be anything fancy, just a bare-bones POM file. That way you can include them without breaking "The Maven Way".

If you want Maven to automatically generate one for you, and install it to your local repo, you can use this command:

mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \
    -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>


Putting the external non-mavenized dependencies into a repository is really the best way - you & others can reuse them on other projects etc. However if this isn't feasible, you can also reference a dependency stored on the disk (perhaps checked out from your version control system as in those old, ugly pre-maven ages). Here is an example of a POM referencing a JAR stored in the project's lib/ folder:

<project ...>
...
        <dependency>
            <groupId>com.ascentialsoftware</groupId>
            <artifactId>tr4j</artifactId>
            <version>8.1</version>
            <scope>system</scope>
            <systemPath>${basedir}/lib/tr4j.jar</systemPath>
        </dependency>
...
</project>

ehm, I've only now noticed that this solution is in the answer to "Maven: add a dependency to a jar by relative path", which is linked to this post - you should check it for a more in-depth discussion. However I leave this here as it's more visible than the link.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜