建立自己的GWT Spring Maven原型

大家好,

在观看Justin撰写的有关Spring和GWT的非常有趣的文章时,我认为展示如何构建自己的自定义Maven原型非常有用。我们将展示的原型基于Justin的上一个项目,并包括各种技术,例如SpringGWTAspectJHornetQInfinispan

聊够了,现在让我们动手吧。

准备原型。

首先,您必须有一个用于构建原型的模板项目。在我们的演示文稿中,您将在此处找到Justin项目。

将目录更改为项目的根目录,然后运行以下命令。

mvn archetype:create-from-project

命令完成后,您将在以下位置找到一个新项目,该项目在$ {project_home} / target / generated-sources / archetype位置生成。它是一个完整的Maven原型项目,您可以根据自己的需要进行自定义。

  • 在文件夹src / main / resources / META-INF / maven中,您可以找到archetype-metadata.xml,它是原型的描述符。
  • 在文件夹src / main / resources / archetype-resources中是将要生成的模板项目。

定制原型。

Maven原型使用apache速度来生成其代码。 您可以通过在文件顶部设置以下常量来访问文件中的速度变量:

#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )

然后,您可以使用$ {artifactId}语法访问Maven属性(例如artifactId 。还可以使用以下语法__artifactId__来访问参数值。

每个原型都具有以下基本参数:

  • groupId
  • artifactId

您还可以使用以下语法在archetype-metadata.xml中设置任意数量的变量:


   
   
      
    
    
       
     
     
      
      default_value
     
     
      
    
    

   
   

请注意,每次添加变量时,都应编辑src / test / resources / projects / basic / archetype.properties并添加参数。

version=0.1-SNAPSHOT
groupId=archetype.it
artifactId=basic
custom_variable=default_value

在我们的示例中,我们执行了以下更改:

src / main / resources / META-INF / maven / archetype-metadata.xml中

<requiredProperties>
      <requiredProperty key="db">
       <defaultValue>derby</defaultValue>
      </requiredProperty>
      <requiredProperty key="dburl">
       <defaultValue>javacodegeeks</defaultValue>
      </requiredProperty>	
      <requiredProperty key="dbusername">
       <defaultValue>***</defaultValue>
      </requiredProperty>
      <requiredProperty key="dbpassword">
       <defaultValue>***</defaultValue>
      </requiredProperty>
      <requiredProperty key="cache">
       <defaultValue>y</defaultValue>
      </requiredProperty>
</requiredProperties>

src / test / resources / projects / basic / archetype.properties

db=derby
dburl=javacodegeeks
dbusername=test
dbpassword=test
cache=n

src / main / resources / archetype-resources / pom.xml中

#if( $db == "derby" )
    <dependency>
    	<groupId>org.apache.derby</groupId>
    	<artifactId>derby</artifactId>
    	<version>10.6.1.0</version>
    </dependency>
    #elseif( $db == "mysql" )
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.13</version>
    </dependency>
    #else	
    <dependency>
        <groupId>org.apache.derby</groupId>
        <artifactId>derby</artifactId>
        <version>10.6.1.0</version>
    </dependency>

<plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.4.3</version>
        <executions>
          <execution>
            <id>copy-resources</id>
            <!-- here the phase you need -->
            <phase>validate</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/src/main/webapp/${package}.Application</outputDirectory>
              <resources>
                <resource>
                  <directory>${basedir}/src/main/resources/${artifactId}</directory>
                  <filtering>true</filtering>
                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>

src / main / resources / archetype-resources / src / main / webapp / WEB-INF / applicationContext.xml中

#if($db == "mysql")	
	<bean id="dataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean"
		init-method="init" destroy-method="close">
		<property name="uniqueResourceName" value="javacodegeeks" />
		<property name="xaDataSourceClassName"
			value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" />
		<property name="xaProperties">
			<props>
				<prop key="URL">${dburl}</prop>
				<prop key="user">${dbusername}</prop>
				<prop key="password">${dbpassword}</prop>
			</props>
		</property>
		<property name="maxPoolSize" value="50" />
		<property name="minPoolSize" value="20" />
	</bean>
	#else
	<bean id="dataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean"
		init-method="init" destroy-method="close">
		<property name="uniqueResourceName" value="javacodegeeks" />
		<property name="xaDataSourceClassName" value="org.apache.derby.jdbc.EmbeddedXADataSource" />
		<property name="xaProperties">
			<props>
        		<prop key="databaseName">${dburl}</prop>
        		<prop key="createDatabase">create</prop>
			</props>
		</property>
		<property name="maxPoolSize" value="50" />
		<property name="minPoolSize" value="20" />
	</bean> 
	#end

src / main / resources / archetype-resources / src / main / resources / META-INF / persistence.xml中

#if($cache == "y")
			<property name="hibernate.cache.use_second_level_cache" value="true"/>
			<property name="hibernate.cache.use_query_cache" value="true"/>
			<property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.infinispan.InfinispanRegionFactory"/>
			<!-- 
			<property name="hibernate.cache.infinispan.entity.eviction.strategy" value= "LRU"/>
			<property name="hibernate.cache.infinispan.entity.eviction.wake_up_interval" value= "2000"/>
			<property name="hibernate.cache.infinispan.entity.eviction.max_entries" value= "5000"/>
			<property name="hibernate.cache.infinispan.entity.expiration.lifespan" value= "60000"/>
			<property name="hibernate.cache.infinispan.entity.expiration.max_idle" value= "30000"/>
			-->

	#else
			<property name="hibernate.cache.use_second_level_cache" value="false"/>^M
                        <property name="hibernate.cache.use_query_cache" value="false"/>^M

	#end

com / javacodegeeks / gwtspring / public文件夹重命名为__artifactId__。

安装和运行原型

要安装原型,请转到原型的根文件夹,然后键入

mvn install

这将创建〜/ .m2 / archetype-catalog.xml文件,如果您是Eclipse的m2eclipse用户,则可以将其导入到eclipse。

要运行原型,请运行以下命令。

mvn archetype:generate -DarchetypeCatalog=local -DarchetypeGroupId=com.javacodegeeks -DarchetypeArtifactId=gwtspring-archetype

或在eclispe中创建一个新的maven项目,然后从您从〜/ .m2 / archetype-catalog.xml导入的本地目录中选择原型。

***请注意,原型可能是快照,您应选中“包括快照原型”

原型的源代码在此处

希望您喜欢这篇文章,

最好的祝福,

翻译自: https://www.javacodegeeks.com/2010/07/building-your-own-gwt-spring-manen.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
功能: 实现数据分页查询显示 特点: 全是免费工具及开源技术 开发框架: gwt1.4.6 + spring2.5 + mysql5.0 开发工具: Eclipse3.4 Cypal Studio for GWT (Eclipse 的一个插件) 实现原理:通过GWT的RPC来调用Spring 传过来的服务器端数据 注意:需要的jar包 * gwt-user.jar * gwt-servlet.jar * mysql-connectot-java-3.1.12.jar * spring.jar * commons-dbcp.1.2.1.jar * coommons-pool-1.4.jar Sql语句: create database booksearch; create table book ( id int not null auto_increment primary key, title varchar(100), isbn varchar(100), edition varchar(100), msrp varchar(100) ) insert into book(title,isbn,edition,msrp) values('title_1','i-sbn-1','editon-1','msrp-1'); insert into book(title,isbn,edition,msrp) values('title_2','i-sbn-2','editon-2','msrp-2'); insert into book(title,isbn,edition,msrp) values('title_3','i-sbn-3','editon-3','msrp-3'); insert into book(title,isbn,edition,msrp) values('title_4','i-sbn-4','editon-4','msrp-4'); insert into book(title,isbn,edition,msrp) values('title_5','i-sbn-5','editon-5','msrp-5'); insert into book(title,isbn,edition,msrp) values('title_6','i-sbn-6','editon-6','msrp-6'); insert into book(title,isbn,edition,msrp) values('title_7','i-sbn-7','editon-7','msrp-7'); insert into book(title,isbn,edition,msrp) values('title_8','i-sbn-8','editon-8','msrp-8'); insert into book(title,isbn,edition,msrp) values('title_9','i-sbn-9','editon-9','msrp-9'); insert into book(title,isbn,edition,msrp) values('title_10','i-sbn-10','editon-10','msrp-10');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值