Java 在maven中,如果我创建一个子包,如何引用主包?
我在maven项目中使用IntelliJ。我是IntelliJ的新手(而且相当专业)。我创建了一个新项目,并且正在毫无问题地构建,但是我注意到,当我在java/下创建一个新的子包时,我无法导入java/中声明的类/接口Java 在maven中,如果我创建一个子包,如何引用主包?,java,maven,intellij-idea,Java,Maven,Intellij Idea,我在maven项目中使用IntelliJ。我是IntelliJ的新手(而且相当专业)。我创建了一个新项目,并且正在毫无问题地构建,但是我注意到,当我在java/下创建一个新的子包时,我无法导入java/中声明的类/接口 我是否需要在子包文件中显式声明包名?如果pom文件中未指定此包路径,默认情况下该包路径是什么?或者这是groupId 在pom.xml中指定的artifactId和groupId值与实际类无关 它们用于帮助您对整个项目(JAR)进行分类,并且对项目中的类或包没有影响 Maven默
我是否需要在子包文件中显式声明包名?如果pom文件中未指定此包路径,默认情况下该包路径是什么?或者这是groupId 在
pom.xml
中指定的artifactId
和groupId
值与实际类无关
它们用于帮助您对整个项目(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;
}
package com.mypackage;
import com.mypackage.subpackage.SomeOtherClass;
public class MyClassA {
SomeOtherClass myOtherField;
}
同样的事情也适用于子包:如果您想从MyClassA
使用SomeOtherClass
,您将有如下功能:
MyClassA.java
文件内容:
package net.netpackage;
import com.mypackage.MyClassA;
public class MyNetClassA {
MyClassA myField;
}
package com.mypackage;
import com.mypackage.subpackage.SomeOtherClass;
public class MyClassA {
SomeOtherClass myOtherField;
}
一个包是否在另一个包下面声明并不重要。您称之为“子包”,但对于Java来说,它只是一个不同的包。
另外,src/test/java
中的任何类都不能访问src/main/java
中的任何类(例如AnotherClassTest
)
另一方面,
src/main/java
中的任何类都可以访问src/test/java在pom.xml
中指定的artifactId
和groupId
值与实际类无关
它们用于帮助您对整个项目(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;
}
package com.mypackage;
import com.mypackage.subpackage.SomeOtherClass;
public class MyClassA {
SomeOtherClass myOtherField;
}
同样的事情也适用于子包:如果您想从MyClassA
使用SomeOtherClass
,您将有如下功能:
MyClassA.java
文件内容:
package net.netpackage;
import com.mypackage.MyClassA;
public class MyNetClassA {
MyClassA myField;
}
package com.mypackage;
import com.mypackage.subpackage.SomeOtherClass;
public class MyClassA {
SomeOtherClass myOtherField;
}
一个包是否在另一个包下面声明并不重要。您称之为“子包”,但对于Java来说,它只是一个不同的包。
另外,src/test/java
中的任何类都不能访问src/main/java
中的任何类(例如AnotherClassTest
)
另一方面,src/main/java
中的任何类都可以被src/test/java
访问