zoukankan      html  css  js  c++  java
  • Appfuse 使用

    利用Maven构建appfuse。

    步骤如下:

    1)Maven下载,下载apache-maven-2.2.1-bin.zip 下载地址:http://apache.freelamp.com/maven/binaries/apache-maven-2.2.1-bin.zip

    2)下载appfuse支持包。下载地址: -2.0.2.zip(开发中需要的各个版本的jar包)

    3)Maven环境搭建

    1.解压缩apache-maven-2.2.1-bin.zip到你想安装的位置,如E:\java\apache-maven-2.2.1。

    2.设置Maven系统环境变量:PATH中添加E:\java\apache-maven-2.2.1\bin。

    3.确认Maven的安装,在命令行输入mvn - version提示Apache Maven 2.2.1即安装成功;

    4)将下载下来的appfuse支持包解压。如:E:\java\m2\repository\

    5)修改E:\java\apache-maven-2.2.1\conf\settings.xml

    如下:

      <!-- localRepository
       | The path to the local repository maven will use to store artifacts.
       |
       | Default: ~/.m2/repository
      <localRepository>/path/to/local/repo</localRepository>
      -->
    <localRepository>E:/java/m2/repository</localRepository>

    6)新建项目:cmd 进入E:\workspace>

    Java代码  收藏代码
    1. mvn archetype:generate -B -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-struts-archetype -DarchetypeVersion=2.1.0 -DgroupId=com.mypro -DartifactId=pro -DarchetypeRepository=http://oss.sonatype.org/content/repositories/appfuse  

     

    (注: 可以到http://appfuse.org/display/APF/AppFuse+QuickStart+-+Chinese 选择你所需要的套件,此处以Struts2为

    例).出现BUILD SUCCESS为成功

    7)获取appfuse源码:

    先进入项目E:\workspace\publicCenter>    再运行mvn appfuse:full-source

    8)修改项目的pom.xml中的 <jdbc.username> 和 <jdbc.password> 为你数据库的用户名和密码

    9)生成eclipse项目 :mvn eclipse:eclipse

    加入支持库:Window -> Preferences -> Java -> Build Path -> Classpath Variables -> New,Name输入M2_REPO,Path输入E:\java\m2\repository

    10)试运行:mvn jetty:run

    11)自动生成代码:此处需要下载模板。mvn appfuse:copy-templates此时会在src/test/resources/appfuse下面多出很多.ftl的文件。这就是模板文件。可以自定义修改。

    12)创建表结构:

    CREATE TABLE `Employee` ( 
    `id` bigint(20) NOT NULL auto_increment, 
    `code` varchar(10) NOT NULL, 
    `dept` varchar(50) NOT NULL, 
    `name` varchar(20) NOT NULL, 
    `status` varchar(10) NOT NULL, 
    `telephone` varchar(20) default NULL, 
    `title` varchar(50) NOT NULL, 
    PRIMARY KEY (`id`) 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    13)通过表来生成pojo:mvn appfuse:gen-model

    删除@GeneratedValue(strategy=IDENTITY)就不报错了

    14)修改pom.xml用于指示是否生成 dao,manager........<genericCore>false</genericCore>为false生成 dao,manager.........反之不生成。当改变了项目路径即不为org.appfuse 时<fullSource>true</fullSource>.

         <groupId>org.codehaus.mojo</groupId>
                    <artifactId>appfuse-maven-plugin</artifactId>
                    <version>${appfuse.version}</version>
                    <configuration>
                       <!-- <genericCore>${amp.genericCore}</genericCore>
                       <fullSource>${amp.fullSource}</fullSource>-->
                        <genericCore>false</genericCore>
                        <fullSource>true</fullSource>
                    </configuration>

    15)自动生成代码:mvn appfuse:gen -Dentity=Employee

    16) mvn appfuse:install -Dentity=Employee 把生成的源代码及配置文件写入到\target\classes

    17)启动项目发现乱码问题:修改displaytag_zh_CN.properties其编码规则为utf-8

    18)用tomcat启动时其实只需要:如建了一个项目包e:/publicWebapp只需要拷贝一下文件进入

    【1】E:\workspace\publicCenter\src\main\webapp

    【2】E:\workspace\publicCenter\target\classes

    【3】新建lib放入E:\workspace\publicWebApp\WEB-INF

    【5】使用命令: mvn dependency:copy-dependencies下载支持包。拷贝E:\workspace\publicCenter\target\dependency下的包至lib。

    19)直接把依赖包拷贝到LIB下面然后启动项目。这时会报一个displaytag错误。其实是tomcat里的jsp.jar和appfuse依赖包里的jsp2.0-api.jar有重叠。删去依赖包中的jsp2.0-api.jar在启动就不报错了。

    20)

    下面就是一些goal命令了,这里和Maven1有不少不同,常用的命令有:

    创建Maven的普通java项目:mvn archetype:create -DgroupId=com.codeline.commons -DartifactId=pjoName  

      
    创建Maven的Web项目:mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp
    -DarchetypeArtifactId=maven-archetype-webapp
     
    编译源代码:mvn compile (或者:mvn compiler:compile)     
    编译测试代码:mvn test-compile

    运行测试:mvn test

    产生site:mvn site 
    打包:mvn package 
    在本地Repository中安装jar:mvn install 
    清除产生的项目:mvn clean 
    生成eclipse项目:mvn eclipse:eclipse 
    生成idea项目:mvn idea:idea 
    组合使用goal命令,如只打包不测试:mvn -Dtest package 
    编译测试的内容:mvn test-compile 
    只打jar包:mvn jar:jar 
    只测试而不编译,也不测试编译:mvn test -skipping compile -skipping test-compile (这里要特别注意 -

    skipping 的灵活运用,当然也可以用于其他组合命令) 
    清除eclipse的一些系统设置:mvn eclipse:clean

    根据pojo生成相关代码文件 :mvn appfuse:gen

    (转自tof.j) * 如何安装Jar(或war)依赖到本地的数据仓库中? 
    下面具一个如何把dwr.jar包上传到本地数据仓库的例子,一看例子,大家就明了了。 
    - 下载dwr.jar包到本地,我把它放到了 C:/ (C盘根目录), 

    - 进入“命令行提示符”,进入到C:/,然后执行 mvn install:install-file -Dfile=dwr.jar -DgroupId=dwr.mocha -DartifactId=dwrDart -Dversion=1.0 -Dpackaging=jar 这样就把dwr传到了本地仓库中(我的本地仓库地址为:E:\app\m2\repository\),上传到仓库中的jar包名为dwrDart- 1.0.jar,目录结构为dwr/mocha/dwrDart/1.0/dwrDart-1.0.jar

    ====================================================================

    以下为网上一朋友记录的心得

      之前部门配了一个Struts2的JAVA开发框架使用情况不是很理想,想通过Appfuse了解一下别人的做法,过程无比的艰辛。如果早知道APPFUSE需要不断的下载文件,我肯定不会用。

    1、项目介绍
         appfuse是一个框架生成工具。如果全部设置妥当,可以通过几个简单的命令,达到生成整个JAVA开发框架的目的,想使用Struts,spring 或者其他的开源工具,而又缺少合理的开发框架的,可以一试。     APPFUSE是使用MAVEN来运行的。MAVEN和ANT类似。

    2、项目的获得
         查看了很多资料,走了不少弯路。不少文章说“获得APPFUSE的两种方式,MAVEN下载或者CVS”,不太准确。
         最好还是下载Maven以后,再appfuse-dependencies-2.0.2.zip或者 appfuse-dependencies-2.0.1.zip解压到Maven的.m2\repository目录下面去 。
          环境:jdk1.5.0_11 ,MYSQL 5.0,TOMCAT 6.0.14,apache-maven-2.0.10,appfuse-dependencies-2.0.1.zip 。
          注意版本。MS因为“DLL HELL”经常受人抨击,但是JAVA的简直就是“Version hell under hell”

    3、遇到的问题和解决
    (1)环境变量设置。
         写批处理文件的时候,“SET MAVEN_HOME=D:\appfuse\apache-maven-2.0.10 ;”  ,后面多了一个分号,浪费了半个小时。


    (2)MYSQL
         在服务管理器中启动失败。查看操作系统日志内容 “ Default storage engine (InnoDB) is not available”。
           网上搜索到一个解决方法:“更改 myini 里面Default storage engine=InnoDB修改为MYISAM ”,事实证明这么做不好,MYSQL是启动了,但是后面引发了其他的错误。
           最后的解决:解决方法:
         1、删除在MySQL安装目录下的Data目录中的ib_logfile0,ib_logfile1,INFO
     oDB\ibdata1
         2、重新启动MySQL的Service

    (3)apache-tomcat-6.0.14.zip     
         跑的过程中,会自动下载apache-tomcat-6.0.14.zip ,为了节约时间,自己手动下载了一个,但是一直报错。后来发现是官方上的apache-tomcat-6.0.14.zip 出了问题,下载下来的只有4.8M,总共有6.2M。所以解压错误。

    (4)SQL SERVER2005连接

          把MYSQL更改为2005的时候,注意把TCP/IP打开,同时端口使用下面的IPALL 的TCP动态端口 。默认是2385

    (5)SQL SERVER2005下,使用mvn appfuse:gen model命令生成POJO出错

          Can't generate seam entities| org.hibernate.cfg.JDBCBinderException: Duplicate class name

          因为默认了去生成DBO和SYS等用户下的所有表和视图。出现了重名的POJO,所以报错。
          target\test-classes\hibernate.reveng.xml   里面加入<schema-selection match-schema="dbo"/>

    (6)生成DAO,SERVICE报错

           Property 'http://apache.org/xml/features/nonvalidating/load-external-dtd' is not recognized.
    org.xml.sax.SAXNotRecognizedException: Property 'http://apache.org/xml/features/nonvalidating/load-external-dtd' is not recognized.

            解决:更换APPFUSE 2.0.2为2.0.1。项目作者MATT拿这个BUG没辙。。。。

    (7)生成奇怪的POJO

            数据库里面有Table1,结果生成了Table1.java和Table1Id.java两个对象。导致后面的一系列问题。

            解决:数据库里面取消双主键

         最后评论一下:APPFUSE,实现了常用开源框架的自动生成,不论是Struts,struts2,springMVC等,都能直接生成从持久到逻辑和测试,甚至页面的基本文件。

    ==============================================================

    只生成一个表的代码

    1.pom.xml中增加 revengfile

    <groupId>org.codehaus.mojo</groupId>
        <artifactId>appfuse-maven-plugin</artifactId>
         <version>${appfuse.version}</version>
         <configuration>
                <componentProperties> 
                <revengfile>src/main/resources/hibernate.reveng.ftl</revengfile> 
               </componentProperties> 
               <genericCore>${amp.genericCore}</genericCore>
               <fullSource>${amp.fullSource}</fullSource>
        </configuration>
       2. hibernate.reveng.ftl中增加
            <schema-selection match-schema="PA" match-table="TABLE_NAME" />
        (注意,一定要match-schema)
        3. src/main/resources/jdbc.properties中增加
           hibernatetool.metadatadialect=org.hibernate.cfg.reveng.dialect.OracleMetaDataDialect
    =================================================================
    Ejb3PropertyGetAnnotation.ftl里面的内容generateJoinColumnsAnnotation(property)修改为
    <#lt/>${pojo.generateJoinColumnsAnnotation(property,cfg)}
     
     
     
     
     
    修改pom文件,在生成eclipse项目的时候mvn eclipse:eclipse使用此配置
      在project/build下面插入
    < plugins >  
          <plugin> 
          <groupId>org.apache.maven.plugins</groupId> 
          <artifactId>maven-eclipse-plugin</artifactId> 
          <configuration> 
             <projectnatures> 
                <java.lang.String>com.genuitec.eclipse.maven.maven2Nature</java.lang.String>
                <java.lang.String>com.genuitec.eclipse.j2eedt.core.webnature</java.lang.String> 
                <java.lang.String>org.eclipse.jdt.core.javanature</java.lang.String> 
              </projectnatures> 
              <outputDirectory>src/main/webapp/WEB-INF/classes</outputDirectory> 
          </configuration> 
        </plugin> 
       </ plugins > 
    4.5 在MyEclipse中将test project 导入到workspace,MyEclipse通过projectNature识别到test是一个MyEclipse web project,它会在项目目录下生成一个.mymetadata文件。再关闭MyEclipse,这么做的原因是因为默认MyEclipse的 webRoot不可配置。

    4.6 修改MyEclipse下面的.mymetadata文件,比如我的test项目文件内容为
    <? xml version="1.0" encoding="UTF-8" ?> 
    < project-module
      
     type ="WEB" 
      name
     ="test" 
      id
     ="myeclipse.1207117121765" 
      j2ee-spec
     ="1.4" 
      archive
     ="test.war" > 
       < attributes > 
         < attribute  name ="webrootdir"  value ="/WebRoot"   /> 
       </ attributes > 
    </ project-module >
    增加一行,修改一行为:
    <? xml version="1.0" encoding="UTF-8" ?> 
    < project-module
      
     type ="WEB" 
      name
     ="test" 
      id
     ="myeclipse.1207117121765" 
      context-root
     ="/test" "
      j2ee-spec
     ="1.4" 
      archive
     ="test.war" > 
       < attributes > 
         < attribute  name ="webrootdir"  value ="/src/main/webapp"   /> 
       </ attributes > 
    </ project-module >

    这步也可采用如下做法(测试):

    第3步后,直接在工程目录下创建一个.mymetadata文件,写入以上文件内容(注意修改红色部分哦!)

    修改后重新导入MyEclipse,基本就是可以用了。

  • 相关阅读:
    WPF学习之路(八)页面
    面试题整理:C#(一)
    [转载] Tomcat架构分析
    [转载] ConcurrentHashMap原理分析
    [转载] Java并发编程:Lock
    [转载] KAFKA分布式消息系统
    [转载] Java并发编程:Callable、Future和FutureTask
    [转载] Java线程池框架源码分析
    [转载] 红黑树(Red Black Tree)- 对于 JDK TreeMap的实现
    [转载] RED-BLACK(红黑)树的实现TreeMap源码阅读
  • 原文地址:https://www.cnblogs.com/yqskj/p/3013633.html
Copyright © 2011-2022 走看看