Java 在maven中,如果我创建一个子包,如何引用主包?

Java 在maven中,如果我创建一个子包,如何引用主包?,java,maven,intellij-idea,Java,Maven,Intellij Idea,我在maven项目中使用IntelliJ。我是IntelliJ的新手(而且相当专业)。我创建了一个新项目,并且正在毫无问题地构建,但是我注意到,当我在java/下创建一个新的子包时,我无法导入java/中声明的类/接口 我是否需要在子包文件中显式声明包名?如果pom文件中未指定此包路径,默认情况下该包路径是什么?或者这是groupId 在pom.xml中指定的artifactId和groupId值与实际类无关 它们用于帮助您对整个项目(JAR)进行分类,并且对项目中的类或包没有影响 Maven默

我在maven项目中使用IntelliJ。我是IntelliJ的新手(而且相当专业)。我创建了一个新项目,并且正在毫无问题地构建,但是我注意到,当我在java/下创建一个新的子包时,我无法导入java/中声明的类/接口


我是否需要在子包文件中显式声明包名?如果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
访问