我将 IntelliJ 与 Maven 项目一起使用。我是 IntelliJ 的新手(而且几乎是 Maven)。我创建了一个新项目并且正在构建没有问题,但是我注意到当我在 java/ 下创建一个新的子包时,我无法导入在 java/ 中声明的类/接口。
我需要在子包文件中显式声明包名吗?如果没有在 pom 文件中指定,这个包路径默认是什么?或者这是groupId?
我将 IntelliJ 与 Maven 项目一起使用。我是 IntelliJ 的新手(而且几乎是 Maven)。我创建了一个新项目并且正在构建没有问题,但是我注意到当我在 java/ 下创建一个新的子包时,我无法导入在 java/ 中声明的类/接口。
我需要在子包文件中显式声明包名吗?如果没有在 pom 文件中指定,这个包路径默认是什么?或者这是groupId?
中指定的artifactId
和groupId
值pom.xml
与实际类无关。
它们用于帮助您对整个项目(jar)进行分类,并且对项目内的类或包没有影响。
Maven默认文件夹结构:
src
|
|--main
| |
| |--java
| | |
| | |--com
| | | |
| | | |--mypackage
| | | |
| | | |--MyClassA.java
| | | |
| | | |--submypackage
| | | |
| | | |--SomeOtherClass.java
| | |--net
| | |
| | |--netpackage
| | |
| | |--MyNetClassA.java
| |
| |--resources
|
|--test
|
|--java
| |
| |--com
| |
| |--anotherpackage
| |
| |--AnotherClassTest.java
|
|--resources
如果你想,从MyNetClassA
,使用MyClassA
,你会得到类似的东西:
MyNetClassA.java
文件内容:
package net.netpackage;
import com.mypackage.MyClassA;
public class MyNetClassA {
MyClassA myField;
}
同样的事情也适用于子包:如果你想,从MyClassA
,使用SomeOtherClass
,你会有类似的东西:
MyClassA.java
文件内容:
package com.mypackage;
import com.mypackage.subpackage.SomeOtherClass;
public class MyClassA {
SomeOtherClass myOtherField;
}
一个包是否在另一个包下面声明并不重要。你称它为“子包”,但对于 Java,它只是一个不同的包。
此外, 中的任何类都不能访问 中的任何类src/test/java
(例如) 。AnotherClassTest
src/main/java
另一方面, 中的任何类src/main/java
都可以访问src/test/java
。