首页 > 代码库 > 使用Intellij Idea运行及调试多模块(module)的Maven项目

使用Intellij Idea运行及调试多模块(module)的Maven项目

刚接触Maven不久,遇到一些问题,现将解决方案记录在此。长期更新。

1. 使用Intellij Idea运行Maven项目(单模块)

刚开始时,我是先在Intellij Idea里写好Maven项目,再使用mvn package命令将项目进行打成war包,然后将war包拷贝到Tomcat的webapps目录下,手动启动Tomcat,最后在浏览器里访问该web项目。这么做很麻烦,特别是项目更改时,需要重新启动Tomcat。

后来想把Tomcat集成到Idea中,但发现Idea社区版不支持Tomcat,而商业版又太贵,于是想使用Jetty来代替Tomcat。

(1)在pom.xml文件里添加jetty插件

    <plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <version>8.1.13.v20130916</version>
    </plugin>
    <build>
<plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <configuration> <webApp> <contextPath>/</contextPath> </webApp> <connectors> <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"> <port>8081</port> <maxIdleTime>60000</maxIdleTime> </connector> </connectors> <requestLog implementation="org.eclipse.jetty.server.NCSARequestLog"> <filename>target/access.log</filename> <retainDays>90</retainDays> <append>false</append> <extended>false</extended> <logTimeZone>GMT+8:00</logTimeZone> </requestLog> <systemProperties> <systemProperty> <name>productionMode</name> <value>${productionMode}</value> </systemProperty> </systemProperties> </configuration> </plugin>
    </build>

 (2)在Intellij Idea中做以下配置

打开Edit Configurations:

 

点击加号,选择Maven:

 

设置Working directory为工程的目录,并在Command line中输入:jetty:run

 

以上设置完毕后,会出现一个三角形的绿色按钮,点击即可运行。

 

在浏览器中访问 localhost:8081/a/url/of/one/page即可检验是否运行成功。

 

2. 使用Intellij Idea运行Maven项目(多模块)

以上方法仅适用于单模块的项目,对于多模块的项目,还需要进行以下设置。此处多模块指的是在父项目下有一个web子模块,若干个其他模块。

(1)需要在web子模块的pom.xml中添加以下信息:

    <profiles>        <!-- With this profile, jetty will run during the "test" phase -->        <profile>            <id>jetty-run</id>            <build>                <plugins>                    <plugin>                        <groupId>org.mortbay.jetty</groupId>                        <artifactId>jetty-maven-plugin</artifactId>                        <version>8.1.13.v20130916</version>                        <configuration>                            <webAppSourceDirectory>                                ${project.build.directory}/${project.build.finalName}                            </webAppSourceDirectory>                        </configuration>                        <executions>                            <execution>                                <id>jetty-run</id>                                <phase>test</phase>                                <goals>                                    <goal>run</goal>                                </goals>                            </execution>                        </executions>                    </plugin>                </plugins>            </build>        </profile>    </profiles>

后续步骤跟第1节单模块的一致,但是在Command line应该填:test -DskipTests=true -Pjetty-run 而不是jetty:run

 

3. 在Intellij Idea中调试web项目

(1)run配置:

编辑第1节中新建的tutorial-run,设置Runner中的VM Options:-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y

通过以上设置,tutorial1会开放8787端口以供调试。

 

(2)debug配置

新建一个Remote configuration,如下:

 

设置调试端口为8787,与run配置中的一致。

 

(3)启动运行和调试:

选择tutorial-run,点击绿色运行按钮,如果出现“Listening for transport dt_socket at address: 8787“的信息则说明运行成功。

然后选择tutorial-debug,点击调试按钮,如果出现“Connected to the target VM, address: ‘localhost:8787‘, transport: ‘socket‘“的信息则说明没有问题。

 

确定以上的运行和调试都成功启动吼,在代码中设置特定断点,在浏览器中访问localhost:8081/a/url/of/one/page,在断点处就会停下,可以进行相关调试操作。

使用Intellij Idea运行及调试多模块(module)的Maven项目