通过本教程,您将学习如何在 Apache NetBeans IDE 中创建由多个模块组成的 Java Maven 项目——遵循此项目开发场景:
此场景假设您必须开发一个包含 3 个模块的项目:共享库、控制台应用程序和桌面应用程序。每个应用程序都有自己的代码,并且它们还在共享库中共享一些通用代码。
使用 Maven,您需要创建根项目作为模块的父级。每个模块都是根项目中的一个单独项目,如下所示:
注意根项目的打包类型必须是pom。并且模块的封装类型可以是jar或war。
现在,让我们在 Apache NetBeans IDE 中创建这个多模块项目。
1.创建根Maven项目
在 NetBeans 中,单击文件 > 新建项目。然后在Categories中选择Java with Maven,在Projects中选择POM Project:
然后输入项目名称并指定 Maven 项目的信息,如下所示:
单击完成。NetBeans 将创建一个简单的 Maven POM 项目,作为子模块的根项目。
2.创建第一个Maven模块
接下来,让我们为共享库项目创建第一个 Maven 模块。右键单击根项目的 Modules 节点,然后从上下文菜单中单击 Create New Module:
然后在 New Project 对话框中,选择 Java Application in Java with Maven:
点击下一步。并为 SharedLibrary 项目指定信息,如下所示:
单击完成。NetBeans 将在 CompanyProject 下创建 SharedLibrary 项目。您可以注意到一个新模块被添加到根项目的pom.xml文件中,如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
< project ...>
[...]
< groupId >com.mycompany</ groupId >
< artifactId >CompanyProject</ artifactId >
< packaging >pom</ packaging >
< version >1.0-SNAPSHOT</ version >
< modules >
< module >SharedLibrary</ module >
</ modules >
[...]
</ project >
|
如您所见,根项目的打包类型是pom。而在 SharedLibrary 项目中,其父信息指定如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
< project ...>
< parent >
< artifactId >CompanyProject</ artifactId >
< groupId >com.mycompany</ groupId >
< version >1.0-SNAPSHOT</ version >
</ parent >
< artifactId >SharedLibrary</ artifactId >
[...]
</ project >
|
然后在 SharedLibrary 项目中编写一个简单的类,如下所示:
1
2
3
4
5
6
7
8
|
package com.mycompany;
public class CommonUtility {
public static String getAppName() {
return "My Company App standard version" ;
}
}
|
控制台应用程序和桌面应用程序都将使用静态方法getAppName() 。
3.创建第二个Maven模块
接下来,让我们为 ConsoleApp 项目创建第二个 Maven 模块,类似于第一个模块。而在 ConsoleApp 项目中,应该是引用了pom.xml文件中的 SharedLibrary 项目如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
< project ...>
[..]
< artifactId >ConsoleApp</ artifactId >
< dependencies >
< dependency >
< groupId >com.mycompany</ groupId >
< artifactId >SharedLibrary</ artifactId >
< version >1.0-SNAPSHOT</ version >
</ dependency >
</ dependencies >
[..]
</ project >
|
然后编写一个简单的控制台程序,如下所示:
1
2
3
4
5
6
7
8
9
|
package com.mycompany;
public class ConsoleApp {
public static void main(String[] args) {
String appName = CommonUtility.getAppName();
System.out.println( "Welcome to " + appName);
}
}
|
在这里,此类使用 SharedLibrary 项目中的 CommonUtility 类。
4.创建第三个Maven模块
与 ConsoleApp 项目类似,为 DesktopApp 项目创建第三个 Maven 模块。根项目的pom.xml最终将针对 3 个模块进行更新,如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
< project ...>
< groupId >com.mycompany</ groupId >
< artifactId >CompanyProject</ artifactId >
< packaging >pom</ packaging >
< version >1.0-SNAPSHOT</ version >
< modules >
< module >SharedLibrary</ module >
< module >ConsoleApp</ module >
< module >DesktopApp</ module >
</ modules >
[...]
</ project >
|
出于演示目的,使用以下代码为桌面程序编写一个简单的 Swing 程序:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
package com.mycompany;
import javax.swing.*;
import java.awt.*;
public class DesktopApp extends JFrame {
static String appName = CommonUtility.getAppName();
public DesktopApp() {
super (appName);
init();
}
private void init() {
setLayout( new FlowLayout());
add( new JLabel( "Welcome to " + appName));
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize( 640 , 480 );
setLocationRelativeTo( null );
}
public static void main(String[] args) {
SwingUtilities.invokeLater( new Runnable() {
@Override
public void run() {
new DesktopApp().setVisible( true );
}
});
}
}
|
你看,这个类还使用了 SharedLibrary 项目中的 CommonUtility 类。
5. 在 Apache NetBeans 中构建多模块 Maven 项目
要在 NetBeans 中构建整个多模块 Maven 项目,请右键单击根项目,然后单击构建。Maven 将构建这个包含子模块的多模块项目,如下所示:
现在您可以检查每个项目中的目标目录。Maven 应该已经为那里的每个项目生成了 jar 文件。
这就是在 Apache NetBeans IDE 中创建多模块 Maven 项目的方法。