`
bazhuang
  • 浏览: 149622 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

maven创建工程

    博客分类:
  • java
阅读更多
下面介绍一下如何利用maven来创建多model的工程:

我们的目标是创建一个demo工程,其包括3个子工程,demo.domain,demo.orm,demo.web,其中domain是存放Service代码,orm是存放数据库操作代码,web是存放controller以及页面相关的代码。打包的时候直接将其打成一个demo.war,直接发布使用。
创建一个普通的java项目可以使用以下命令:
mvn archetype:create -DgroupId=com.demo -DartifactId=demo -Dversion=1.0.0 -DarchetypeGroupId=org.apache.maven.archetypes
我们就可以创建一个普通的java project,进入demo目录,可以看到pom.xml中的内容如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.demo</groupId>
  <artifactId>demo</artifactId>
  <packaging>jar</packaging>
  <version>1.0.0</version>
  <name>demo</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

我们的目的是想在demo中创建一个多项目的工程。一个demo.domain、demo.orm、demo.web,然后通过上面创建的这个工程将其管理起来。
那我们同样利用命令:mvn archetype:create -DgroupId=com.demo -DartifactId=demo.domain -Dversion=1.0.0 -DarchetypeGroupId=org.apache.maven.archetypes,就可以创建一个demo.domain这个项目。然后依样画葫芦可以创建一个demo.orm,创建demo.web的时候需要多添加一个参数,指定该工程为一个webapp,命令如下:
mvn archetype:create -DgroupId=com.demo -DartifactId=demo.web -Dversion=1.0.0 -DarchetypeArtifactId=maven-archetype-webapp

然后我们将demo.orm,demo.domain,demo.web下的pom.xml打开,里面增加:
	……
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<artifactId>demo</artifactId>
		<groupId>com.demo</groupId>
		<version>1.0.0</version>
	</parent>
	……

然后把这些工程移动到demo目录下,打开demo目录下的pom.xml文件,添加如下代码:
	……
	<url>http://maven.apache.org</url>
	<modules>
		<module>demo.web</module>
		<module>demo.domain</module>
		<module>demo.orm</module>
	</modules>
	……

这样就把这些工程的结构定义好了,demo为父工程,demo.domain,demo.orm,以及demo.web就是其子工程。

接下来还需要对demo中的pom.xml进行修改,修改之后的内容如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.demo</groupId>
  <artifactId>demo</artifactId>
  <version>1.0.0</version>
<packaging>pom</packaging>
  <name>demo</name>
  <url>http://maven.apache.org</url>
	<modules>
		<module>demo.web</module>
		<module>demo.domain</module>
		<module>demo.orm</module>
	</modules>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

主要就是将packaging的内容修改为pom。

还有就是修改demo.web下的pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
	<parent>
		<artifactId>demo</artifactId>
		<groupId>com.demo</groupId>
		<version>1.0.0</version>
	</parent>
  <groupId>com.demo</groupId>
  <artifactId>demo.web</artifactId>
  <packaging>war</packaging>
  <version>1.0.0</version>
  <name>demo.web Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <build>
		<finalName>demo</finalName>
		<plugins>
			<plugin>
				<groupId>org.mortbay.jetty</groupId>
				<artifactId>maven-jetty-plugin</artifactId>
				<version>6.1.9</version>
				<configuration>
					<contextPath>/demo</contextPath>
					<scanIntervalSeconds>3</scanIntervalSeconds>
					<scanTargetPatterns>
						<scanTargetPattern>
							<directory>src/main/webapp</directory>
						</scanTargetPattern>
					</scanTargetPatterns>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<compilerArgument>-verbose </compilerArgument>
					<source>1.5</source>
					<target>1.5</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

这里就是修改了build节点,第一处是指定了编译后的war包的名称为demo.war,第二处的plugin是指定编译的jdk版本为1.5。
还需要指定一下maven编译时候使用的编码,如果不指定的话,就会利用操作系统默认的编码,这样编译的java代码执行时候会出现乱码。
所以需要在pom.xml文件中指定编译时候使用的编码,以及资源文件的编码。
需要修改pom.xml中的build节点,增加如下内容:
<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.5</source>
					<target>1.5</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-resources-plugin</artifactId>
				<configuration>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>

就是在指定了编译使用的jdk版本之后,添加encoding节点配置,然后再增加maven-resources-plugin插件配置就可以了。
如上配置,java文件编译就完全没有问题了。
完整的示例代码如附件所示

最后我们执行一下mvn package命令,就可以打包部署了:
D:\example\demo>mvn package
[INFO] Scanning for projects...
[INFO] Reactor build order:
[INFO]   demo
[INFO]   demo.web Maven Webapp
[INFO]   demo.domain
[INFO]   demo.orm
[INFO] ------------------------------------------------------------------------
[INFO] Building demo
[INFO]    task-segment: [package]
[INFO] ------------------------------------------------------------------------
[INFO] [site:attach-descriptor {execution: default-attach-descriptor}]
[INFO] ------------------------------------------------------------------------
[INFO] Building demo.web Maven Webapp
[INFO]    task-segment: [package]
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources {execution: default-resources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO] [compiler:compile {execution: default-compile}]
[INFO] No sources to compile
[INFO] [resources:testResources {execution: default-testResources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory D:\example\demo\demo.web\src\test\resources
[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] No sources to compile
[INFO] [surefire:test {execution: default-test}]
[INFO] No tests to run.
[INFO] [war:war {execution: default-war}]
[INFO] Packaging webapp
[INFO] Assembling webapp[demo.web] in [D:\example\demo\demo.web\target\demo]
[INFO] Processing war project
[INFO] Copying webapp resources[D:\example\demo\demo.web\src\main\webapp]
[INFO] Webapp assembled in[47 msecs]
[INFO] Building war: D:\example\demo\demo.web\target\demo.war
[INFO] ------------------------------------------------------------------------
[INFO] Building demo.domain
[INFO]    task-segment: [package]
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources {execution: default-resources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory D:\example\demo\demo.domain\src\main\resources
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources {execution: default-testResources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory D:\example\demo\demo.domain\src\test\resources
[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [surefire:test {execution: default-test}]
[INFO] Surefire report directory: D:\example\demo\demo.domain\target\surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.demo.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.016 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] [jar:jar {execution: default-jar}]
[INFO] Building jar: D:\example\demo\demo.domain\target\demo.domain-1.0.0.jar
[INFO] ------------------------------------------------------------------------
[INFO] Building demo.orm
[INFO]    task-segment: [package]
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources {execution: default-resources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory D:\example\demo\demo.orm\src\main\resources
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Compiling 1 source file to D:\example\demo\demo.orm\target\classes
[INFO] [resources:testResources {execution: default-testResources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory D:\example\demo\demo.orm\src\test\resources
[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] Compiling 1 source file to D:\example\demo\demo.orm\target\test-classes
[INFO] [surefire:test {execution: default-test}]
[INFO] Surefire report directory: D:\example\demo\demo.orm\target\surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.demo.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.015 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] [jar:jar {execution: default-jar}]
[INFO] Building jar: D:\example\demo\demo.orm\target\demo.orm-1.0.0.jar
[INFO]
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] ------------------------------------------------------------------------
[INFO] demo .................................................. SUCCESS [1.547s]
[INFO] demo.web Maven Webapp ................................. SUCCESS [1.218s]
[INFO] demo.domain ........................................... SUCCESS [0.766s]
[INFO] demo.orm .............................................. SUCCESS [1.937s]
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5 seconds
[INFO] Finished at: Tue Jul 21 15:39:21 CST 2009
[INFO] Final Memory: 16M/29M
[INFO] ------------------------------------------------------------------------
分享到:
评论

相关推荐

    基于maven创建web项目

    基于maven创建web项目 ...本文介绍了基于maven创建web项目的步骤,包括搭建maven环境、集成maven到Myeclipse2013和创建maven架构下的WEB工程。通过这篇文章,读者可以学习到如何使用maven来构建和管理web项目。

    maven创建web工程

    ### Maven 创建 Web 工程详解 #### 一、前言 在现代软件开发过程中,构建工具扮演着极其重要的角色。Maven 是一款流行的自动化构建工具,它不仅简化了项目的构建过程,还为 Java 应用程序提供了标准化的构建生命...

    Maven创建Java工程

    ### Maven创建Java工程项目详解 Maven作为Java世界中广受欢迎的构建工具,其强大的功能不仅限于项目的构建,还涵盖了依赖管理、项目信息管理和构建生命周期等多个方面。通过Maven,开发者能够高效地创建、构建和...

    maven创建父子结构工程

    本篇文章将详细讲解如何使用Maven创建父子结构工程,以便于更好地组织和管理大型项目。 首先,理解Maven的父子结构(多模块项目)是至关重要的。在大型项目中,通常会将项目划分为多个子模块,每个子模块负责不同的...

    idea使用maven创建web项目详细教程

    本教程将指导您使用 IDEA 创建一个 Maven Web 项目,从安装 Maven 到配置 Maven 环境、创建 Maven 工程、pom.xml 文件配置、依赖管理等。 1. 安装 Maven 在 IDEA 中使用 Maven 之前,需要先安装 Maven。在 Maven ...

    在eclipse中不使用maven创建springboot工程所需jar包

    在不使用Maven的情况下,在Eclipse中创建Spring Boot工程,你需要手动管理依赖的jar包。以下是一些关于这些jar包及其在Spring Boot项目中的作用的关键知识点: 1. **jboss-logging-3.3.0.Final.jar**:这是一个日志...

    手动创建maven工程

    本资源提供了一个手动创建的Maven工程示例,有助于初学者理解和掌握如何从零开始构建Maven项目。 首先,我们要理解Maven的核心概念——Project Object Model (POM)。POM是Maven项目的基本配置单元,包含了项目信息...

    eclipse结合maven创建web工程截图

    eclipse结合maven创建web工程截图

    maven教程-v1.0

    #### Maven创建工程 - **命令行创建**:使用`mvn archetype:generate`命令结合指定的模板来快速创建项目。 - **IDE集成**:多数主流IDE(如Eclipse、IntelliJ IDEA)支持通过图形界面创建Maven项目。 #### Maven...

    maven 逆向逆向工程

    1. **Maven Archetype插件**:Maven Archetype插件是实现逆向工程的核心工具,它可以创建基于模板的新项目。在逆向工程中,Archetype插件会分析已存在的类和资源,生成相应的pom.xml文件以及项目目录结构。 2. **...

    springboot创建maven聚合工程

    Spring Boot 创建 Maven 聚合工程是构建大型、模块化应用程序的一种有效方式。在这个过程中,我们将探讨如何使用 Spring Initializr 和 Maven 来构建一个包含多个子模块的父工程,以便更好地管理和组织代码。 首先...

    maven多工程搭建过程

    本文将详细讲解如何在IntelliJ IDEA(Idea)中创建和管理多Maven模块工程,以便更好地组织和协同开发复杂的软件系统。 一、Maven简介 Maven是一个基于项目对象模型(Project Object Model,POM)的概念,它能够自动...

    使用ECLIPSE创建MAVEN工程图解

    使用ECLIPSE创建MAVEN工程图解 Eclipse 是一个功能强大且广泛使用的集成开发环境(IDE), Maven 是一个基于项目对象模型(POM)的项目管理工具。本文将指导您如何使用Eclipse 创建 Maven 工程,并了解 Maven 的...

    搭建maven工程

    本文将指导读者从无到有搭建一个 Maven 工程,包括创建多模块工程、子模块的建立、修改父、子文件、目录结构的调整等内容。 创建 Maven 多模块工程 Maven 多模块工程是指一个项目中包含多个子模块,每个子模块都...

    通过maven创建创建SpringBoot工程

    通过Maven创建Spring Boot项目的步骤及其相关知识点可以分为以下几个部分进行详细阐述: ### 一、Maven与Spring Boot简介 - **Maven**: Apache Maven 是一个项目管理和理解工具。基于项目对象模型(POM),Maven ...

    spring+maven项目工程

    本项目工程"spring+maven"整合了这两者,以实现高效且易于维护的Java应用。 首先,让我们深入理解Spring框架的核心概念——依赖注入(Dependency Injection,简称DI)。在"通过注释实现IOC"部分,我们指的是使用...

    使用Maven搭建S2SH工程详解一:使用Maven创建struts2工程

    【使用Maven搭建S2SH工程详解一:创建Struts2工程】 在Java Web开发中,S2SH架构(Struts2 + Spring + Hibernate)是一种常见的应用框架组合,用于构建高效、灵活的企业级应用程序。本篇文章主要讲解如何利用Maven...

    hibernate+maven demo项目工程

    【hibernate+maven demo项目工程】是一个基于Hibernate ORM框架和Maven构建工具的示例项目,旨在帮助开发者理解和实践如何在实际开发中整合这两项技术。该项目的主要目的是展示如何利用Maven管理依赖,以及如何配置...

Global site tag (gtag.js) - Google Analytics