网上类似文档很多,不过都不完整,也没解释一些遇到的棘手问题,特此记录下。
1、首先,构建自己满意的MAVEN架构的WEB开发框架,假设项目目录为d:\pm\mavenproject\web-shav,groupId为com.brother,artifactId为oa,version为1.7.5。
2、进入项目目录d:\pm\mavenproject\web-shav,命令行执行mvn archetype:create-from-project。
3、默认情况下,archetype-metadata.xml文件有许多需要改良的地方,文件在
D:\pm\mavenproject\web-shav\target\generated-sources\archetype\target\oa-archetype-1.7.5.jar中,目录为META-INF\maven。
a、create-from-project目标默认会对架构元数据配置文件中的java文件进行package替换,假设两个类分别为com.portal.pub.utils.AppUtils和com.portal.pub.dao.AppDao,则这两个类的包路径会被修改为
${package}.utils和${package}.dao。这种替换很诡异,我觉得一般情况下都用不上,替换原则也很简单,就是找到所有java文件相同的路径部分替换为${package}。
在archetype-metadata.xml文件中增加如下配置信息,避免创建项目时还要指定包路径的尴尬。
<requiredProperties>
<requiredProperty key="package">
<defaultValue>com.portal.pub</defaultValue>
</requiredProperty>
</requiredProperties>
b、源项目pom.xml文件中的某些依赖包的版本或者artifactId被替换成了${version}和${rootArtifactId},最典型的是如下情况。
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>4.1.7.5</version>
</dependency>
oa-archetype-1.7.5.jar中\archetype-resources\pom.xml中被替换成了
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupl${rootArtifactId}d</artifactId>
<version>${version}</version>
</dependency>
4.1.7.5都能被替换成${version},很郁闷的事情,现在也没什么好办法,archetype生成后仔细查下${}有哪些吧。
4、解决上述问题后,mvn install,安装到maven本地库。
5、mvn archetype:generate -DarchetypeGroupId=com.brother -DarchetypeArtifactId=oa-archetype -DarchetypeVersion=1.7.5 -DgroupId=test -DartifactId=web -Dversion=1.0.0
注意前面几个archetype参数项与D:\pm\mavenproject\web-shav\target\generated-sources\archetype\pom.xml文件中一致,如果没改过,就只是在源artifactId上加了"-archetype"。
6、知道如何通过源项目来构建archetype,要开始进行源项目的一些细节处理。
a、pom.xml文件中packaging要配置成war,这样maven在打包过程会有针对web项目的一些特定逻辑,比如:会将\src\main\webapp下的所有文件打包到war中;会将\src\main\resources下的所有文件复制到war包中的WEB-INF/classes目录;\src\main\java下所有java生成的class复制到war包中的WEB-INF/classes目录。
7、要集成spring、hibernate、ibatis、activiti,进行pom.xml文件的配置,遇到一些问题,记录并贴上解决办法。
a、http://maven.alfresco.com/nexus/content/repositories/activiti仓库以前都是好的,现在有点坑人,不但下载的jar包是有问题的,就连仓库中不存在的jar也会被下载,导致MAVEN不会再去尝试其他远程仓库,
如果没有代理仓库,这里很容易导致各种问题,因为默认的center仓库是放在搜索仓库的最后。
到activiti官方论坛咨询了下,官方回答是仓库有些问题,时好时坏,没办法了,只有自己动手,丰衣足食了。
直接通过浏览器到仓库下载activiti-engine-5.10.jar和activiti-spring-5.10.jar。
以activiti-engine-5.10.jar为例,可以安装到本地仓库。
mvn install:install-file -DgroupId=org.activiti -DartifactId=activiti-engine -Dversion=5.10 -Dpackaging=jar -Dfile=activiti-engine-5.10.jar
考虑到企业内分享,也可以安装到自己的代理仓库。
mvn deploy:deploy-file -DgroupId=org.activiti -DartifactId=activiti-engine -Dversion=5.10 -Dpackaging=jar -Dfile=activiti-engine-5.10.jar -Durl=http://localhost:7777/nexus/content/repositories/thirdparty -DrepositoryId=thirdparty
附上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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.brother</groupId>
<artifactId>portal</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>brother portal</name>
<description>This is a portal system, and it will provide the basic structure for web project</description>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<activiti-version>5.10</activiti-version>
<spring-version>3.1.2.RELEASE</spring-version>
<hibernate-version>4.1.7.Final</hibernate-version>
</properties>
<dependencies>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<version>${activiti-version}</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring</artifactId>
<version>${activiti-version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.3.168</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring-version}</version>
</dependency>
</dependencies>
</project>
分享到:
相关推荐
JavaWeb入门级别的DEMO主要涉及的是Java开发中的Web应用程序构建,使用了SSM(Spring、SpringMVC、MyBatis)三大主流框架。这个DEMO旨在为初学者提供一个简单的学习平台,帮助他们快速理解并掌握JavaWeb开发的基础...
Apache CXF是一个开源框架,主要用于开发和实现Web服务。它提供了丰富的API和工具,使得创建、部署和管理Web服务变得更加简单。"Apache CXF开发Web Service - 开发Web Service之Kick Start"的主题意味着我们将深入...
SpringMVC 是一款基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一部分,主要用于构建 MVC(Model-View-Controller)架构的应用程序。SpringMVC 的核心是 DispatcherServlet,它作为前端控制器,负责接收请求...
SSM框架,全称Spring、SpringMVC和MyBatis,是Java开发中常见的Web应用框架组合。这个项目是一个基于IDEA开发环境的简单DEMO,用于演示如何整合这三个组件来实现基本的用户登录、注册、退出以及数据的增删改功能。...
**编译与打包**:使用Maven进行构建。 3. **部署**:将编译好的jar包部署到应用服务器上。 - **配置文件详解**: - **jboss-deployment-structure.xml**:用于JBoss服务器的部署结构配置。 - **jbpm-context.xml...
学习JAVA编程语言可以是一项...了解常用的ORM框架如MyBatis、Hibernate或JPA的使用,对于构建稳定且高效的Web应用至关重要。以上内容构成了JavaWeb全栈开发的主要知识点,每个部分都是构建现代Web应用不可或缺的一环。
- **章节概述**:本章介绍了Restlet框架的基本概念和发展历史,以及它如何帮助开发者构建RESTful Web服务。 - **核心知识点**: - RESTful架构原则与实践。 - Restlet框架的核心组件及其工作原理。 - 如何选择...
**Spring Boot** 是一个基于Spring框架开发的应用程序框架,旨在简化新Spring应用程序的初始设置和配置。它使用“约定优于配置”的原则来简化开发过程,帮助开发者快速搭建独立的、生产级别的基于Spring的应用程序。...
例如,`spring-boot-starter-web` 就包含了构建 Web 应用所需的所有依赖。 #### 代码结构 Spring Boot 应用的代码结构较为灵活,可以使用默认包名,也可以根据需要自定义主类的位置。 #### 配置类 Spring Boot ...
3. **框架应用**:Spring框架、MyBatis、Hibernate等常见Java开发框架的使用教程和示例代码。 4. **设计模式**:介绍各种设计模式,如单例、工厂、观察者等,以及如何在Java项目中应用它们。 5. **源码分析**:...
- **构建工具**:了解Maven和Gradle的基本用法,能够利用这些工具进行项目构建。 #### 五、实战项目经验 - **小项目实践**:通过完成简单的CRUD(创建、读取、更新、删除)操作的小项目来巩固所学知识。 - **开源...