简体   繁体   中英

Locally installed jar not seen by maven

I have source code for a framework, let's call it my-framework . It provides various packages, including com.not_telling.framework.db .

I have a pom.xml file for this framework:

<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.not_telling</groupId>
    <artifactId>my-famework</artifactId>
    <packaging>jar</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>my-framework Maven Library</name>
    <url>http://maven.apache.org</url>
    <!-- more things here... -->
</project>

I can compile this and install it to my local repository cache, using this command:

mvn install

End of the install log:

[INFO] Installing C:\Users\MyUserName\my-framework\backend\target\my-framework.jar to C:\Users\MyUserName\.m2\repository\com\not_telling\my-famework\0.0.1-SNAPSHOT\my-famework-0.0.1-SNAPSHOT.jar
[INFO] Installing C:\Users\MyUserName\my-framework\backend\pom.xml to C:\Users\MyUserName\.m2\repository\com\not_telling\my-famework\0.0.1-SNAPSHOT\my-famework-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

Then I have another project, that tries to use this as a dependency:

    <dependency>
        <groupId>com.not_telling</groupId>
        <artifactId>my-famework</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>

The compilation phase of this project fails with this message:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project my-project: Compilation failure: Compilation failure:
[ERROR] /C:/Users/MyUserName/workspace/my-project/backend/src/main/java/com/not_telling/some_example.java:[13,17] package com.not_telling.framework.db does not exist

Why is that? Maybe because the jar is in the repository cache, but not in a local repository?

This question is a follow up of absolute maven pomderived entry added to classpath - I realized that instead of doing magic with relative source directory references, I need to make a separate module, but I'm facing this problem.

It was bleeding from numerous wounds. These needed to be fixed:

  • move source files from under src/ to under src/main/java, in both the framework and the application project
  • change the group and the artifact id to match the package name Eg for a package that is named "com.not_telling.framework" I had to use groupId=com.not_telling and name=framework.
  • The dependency scope was wrong in the application's pom file. I had to remove test

Now it works from command line I can do "mvn install" for the framework, and then "mvn package" for the applications.

The only problem left is that the application cannot be compiled from eclipse, I had to remove all linked source folders / build paths in the application project to the framework.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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