maven没有看到当地安装的jar

时间:2017-12-19 06:19:58

标签: java maven

我有框架的源代码,我们称之为my-framework。它提供各种包,包括com.not_telling.framework.db

我有一个这个框架的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/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>

我可以使用以下命令编译它并将其安装到我的本地存储库缓存中:

mvn install

安装日志结束:

[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] ------------------------------------------------------------------------

然后我有另一个项目,尝试将其用作依赖项:

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

此项目的编译阶段失败,显示以下消息:

[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

为什么?也许是因为jar是在存储库缓存中,而不是在本地存储库中?

这个问题是absolute maven pomderived entry added to classpath的后续问题 - 我意识到我不是用相对的源目录引用做魔术,而是需要创建一个单独的模块,但我面临这个问题。

1 个答案:

答案 0 :(得分:0)

许多伤口都在流血。这些都需要修复:

  • 在框架和应用程序项目中将源文件从src /下移动到src / main / java下
  • 更改组和工件ID以匹配包名称E.g.对于名为&#34; com.not_telling.framework&#34;的包。我不得不使用groupId = com.not_telling和name = framework。
  • 应用程序的pom文件中的依赖范围是错误的。我不得不删除测试

现在它可以从我可以执行的命令行开始工作&#34; mvn install&#34;为框架,然后&#34; mvn包&#34;对于应用程序。

唯一的问题是应用程序无法从eclipse编译,我不得不将应用程序项目中的所有链接源文件夹/构建路径删除到框架。