`
fortaotao
  • 浏览: 47689 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

MAVEN入门心得(3)-构建自己的WEB开发框架

 
阅读更多

网上类似文档很多,不过都不完整,也没解释一些遇到的棘手问题,特此记录下。

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

    JavaWeb入门级别的DEMO主要涉及的是Java开发中的Web应用程序构建,使用了SSM(Spring、SpringMVC、MyBatis)三大主流框架。这个DEMO旨在为初学者提供一个简单的学习平台,帮助他们快速理解并掌握JavaWeb开发的基础...

    Apache CXF开发Web Service 开发Web Service之Kick Start

    Apache CXF是一个开源框架,主要用于开发和实现Web服务。它提供了丰富的API和工具,使得创建、部署和管理Web服务变得更加简单。"Apache CXF开发Web Service - 开发Web Service之Kick Start"的主题意味着我们将深入...

    SpringMVC 学习总结

    SpringMVC 是一款基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一部分,主要用于构建 MVC(Model-View-Controller)架构的应用程序。SpringMVC 的核心是 DispatcherServlet,它作为前端控制器,负责接收请求...

    idea整合ssm框架实现登录注册退出增删改

    SSM框架,全称Spring、SpringMVC和MyBatis,是Java开发中常见的Web应用框架组合。这个项目是一个基于IDEA开发环境的简单DEMO,用于演示如何整合这三个组件来实现基本的用户登录、注册、退出以及数据的增删改功能。...

    jbpm4.2开发文档

    **编译与打包**:使用Maven进行构建。 3. **部署**:将编译好的jar包部署到应用服务器上。 - **配置文件详解**: - **jboss-deployment-structure.xml**:用于JBoss服务器的部署结构配置。 - **jbpm-context.xml...

    学习JAVA的一些心得

    学习JAVA编程语言可以是一项...了解常用的ORM框架如MyBatis、Hibernate或JPA的使用,对于构建稳定且高效的Web应用至关重要。以上内容构成了JavaWeb全栈开发的主要知识点,每个部分都是构建现代Web应用不可或缺的一环。

    Restlet in Action

    - **章节概述**:本章介绍了Restlet框架的基本概念和发展历史,以及它如何帮助开发者构建RESTful Web服务。 - **核心知识点**: - RESTful架构原则与实践。 - Restlet框架的核心组件及其工作原理。 - 如何选择...

    SpringBoot入门课程两套其中一套2017年培训机构的

    **Spring Boot** 是一个基于Spring框架开发的应用程序框架,旨在简化新Spring应用程序的初始设置和配置。它使用“约定优于配置”的原则来简化开发过程,帮助开发者快速搭建独立的、生产级别的基于Spring的应用程序。...

    spring-boot使用指南

    例如,`spring-boot-starter-web` 就包含了构建 Web 应用所需的所有依赖。 #### 代码结构 Spring Boot 应用的代码结构较为灵活,可以使用默认包名,也可以根据需要自定义主类的位置。 #### 配置类 Spring Boot ...

    个人收集的java开发资源(会不断更新)

    3. **框架应用**:Spring框架、MyBatis、Hibernate等常见Java开发框架的使用教程和示例代码。 4. **设计模式**:介绍各种设计模式,如单例、工厂、观察者等,以及如何在Java项目中应用它们。 5. **源码分析**:...

    Java的学习要点.想学Java的人可以看下

    - **构建工具**:了解Maven和Gradle的基本用法,能够利用这些工具进行项目构建。 #### 五、实战项目经验 - **小项目实践**:通过完成简单的CRUD(创建、读取、更新、删除)操作的小项目来巩固所学知识。 - **开源...

Global site tag (gtag.js) - Google Analytics