Java IntelliJ无法使用Maven解析符号第三方jar
我有一个第三方JAR,我通过Java IntelliJ无法使用Maven解析符号第三方jar,java,maven,intellij-idea,Java,Maven,Intellij Idea,我有一个第三方JAR,我通过mvn install:install file命令为它创建了一个工件。工件被添加到项目中,模块的pom.xml被很好地导入 不幸的是,使用第三方JAR中的符号创建Java类仍然没有解决。红色的灯泡显示出来,并且没有我预期的“导入类”选项 我试图使缓存无效,但没有成功 有什么想法吗 编辑如果我改为安装已编译的JAR,则符号将被解析。为什么会这样 编辑2添加显示内部共享工件的pom.xml <?xml version="1.0" encoding="UTF-8"?
mvn install:install file
命令为它创建了一个工件。工件被添加到项目中,模块的pom.xml
被很好地导入
不幸的是,使用第三方JAR中的符号创建Java类仍然没有解决。红色的灯泡显示出来,并且没有我预期的“导入类”选项
我试图使缓存无效,但没有成功
有什么想法吗
编辑如果我改为安装已编译的JAR,则符号将被解析。为什么会这样
编辑2添加显示内部共享工件的pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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>
<packaging>pom</packaging>
<name>Sandbox</name>
<parent>
<groupId>com.x.y</groupId>
<artifactId>third-party-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>com.x.y.z</groupId>
<artifactId>thirdparty-z</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.x.y.thirdparty</groupId>
<artifactId>thirdparty-sources</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>com.x.y.thirdparty</groupId>
<artifactId>thirdparty-compiled</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</project>
4.0.0
聚甲醛
沙箱
com.x.y
第三方母公司
1.0-快照
com.x.y.z
第三方
1.0-快照
第三方
第三方来源
1
第三方
第三方汇编
1
此Maven项目文件pom.xml
包含修复程序,以及有关更改内容和更改原因的一些提示/提示
<?xml version="1.0" encoding="UTF-8"?>
<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>
<!-- Parent POM best at the top -->
<!-- WANRING: Here you import the parent of 3th party. This is (almost) never correct!!! -->
<!-- For a simple project, which only exists of 1 set of classes and unit tests, you do -->
<!-- not need a parent POM. Only for multi module Maven project, you will have a parent -->
<!-- POM. Or for organisation wide configuration, of repositories, Maven plugin -->
<!-- configuration, and so. When starting with a small project, leave out the parent POM -->
<!-- reference. -->
<parent>
<groupId>com.x.y</groupId>
<artifactId>third-party-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<!-- Better keep all project stuff together -->
<groupId>com.x.y.z</groupId>
<artifactId>your-project-name</artifactId>
<packaging>pom</packaging>
<name>My Little Sandbox</name>
<version>1.0.0-SNAPSHOT</version>
<dependencies>
<!-- Here only a reference to the compiled jar is required!!! -->
<!-- If a source jar is available, it will get pulled in automatically!!! -->
<!-- As this is done by (naming) convention of all jars, in a Maven repository -->
<dependency>
<groupId>com.x.y.thirdparty</groupId>
<artifactId>thirdparty</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</project>
4.0.0
com.x.y
第三方母公司
1.0-快照
com.x.y.z
您的项目名称
聚甲醛
我的小沙箱
1.0.0-SNAPSHOT
第三方
第三方
1
备注:新项目扩展第三方父POM的罕见情况是,新项目是第三方项目的某种扩展/插件。然后,它可以使用与第三方相同的Maven插件版本、依赖项等。这使得新的扩展/插件能够很好地与第三方软件的其他部分配合使用
尝试的具体例子
项目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">
4.0.0
org.organization.play-ground
我的小沙箱
聚甲醛
我的小沙箱
1.0.0-SNAPSHOT
org.slf4j
slf4j api
1.7.12
回写
回归经典
1.1.3
运行时
org.testng
testng
6.9.8
测试
组ID、工件ID和版本是否正确?(我的意思是,它们与您安装依赖项时使用的相同吗?)您是否在IntelliJ中更新了Maven项目?也许“Maven-下载源”会有所帮助,但不能确定pom设置是否正确,否则它不会首先导入IntelliJ,对吗?我可以导航到库并查看源代码。如果我试图直接引用一个类,比如com.x.y。它不起作用。IntelliJ能够自动完成com.x.y。但是它不会显示在下拉列表中,尽管它存在于源jar!中!。您是否尝试过mvn创意:idea@awsome我不会以那种方式导入项目。我只是将pom.xml改进为IntelliJ。@hajder,这让你更进一步了吗?
<?xml version="1.0" encoding="UTF-8"?>
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>org.organisation.play-ground</groupId>
<artifactId>my-little-sandbox</artifactId>
<packaging>pom</packaging>
<name>My Little Sandbox</name>
<version>1.0.0-SNAPSHOT</version>
<dependencies>
<!-- A dependency reuired for each phase -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.12</version>
</dependency>
<!-- A dependency only needed during runtime phase -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.3</version>
<scope>runtime</scope>
</dependency>
<!-- A dependency only needed during compile and test phase -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.9.8</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>