最近要使用springside作为整合框架来进行平台组的开发,匆忙搭建了一个quickstart演示工程.记录一下当时的过程:
- 下载springside4-4.1.0.GA.zip
- 解压好工程组,import到eclipse,有些版本可能需要在解压文件夹里运行mvn eclipse:eclipse命令来初始化eclipse工程,否则无法直接导入
- 在修改quickstart之前需要先在maven中安装springside的core,engine等核心包,需要进入到解压缩的目录\springside4-4.1.0.GA\modules 先运行mvn install 完成quicksitart所依赖的核心库的安装
- 这个时候出现了一个core包的mvn编译异常,简单的来说就是core工程里的jasonmapper类泛型编译发生错误,可以通过去springside4.4.1的资源库下载新的代码替换即可
- 打开quickstart工程里的pom.xml,修改里面数据库部分的依赖,把默认的h2改为oracle
<!-- 项目属性 --> <!-- <jdbc.driver.groupId>com.h2database</jdbc.driver.groupId> <jdbc.driver.artifactId>h2</jdbc.driver.artifactId> <jdbc.driver.version>${h2.version}</jdbc.driver.version> --> <jdbc.driver.groupId>com.oracle</jdbc.driver.groupId> <jdbc.driver.artifactId>ojdbc6</jdbc.driver.artifactId> <jdbc.driver.version>11.2.0.1.0</jdbc.driver.version>
- 这里有一个问题就是ojdbc的mvn配置不是能够自动下载的,只能先手工下载ojdbc6,然后通过mvn install命令将jar包安装到mvn repo中再刷新下工程,就ok了
- 再修改dbprofile里transaction的配置
<!-- 刷新开发环境数据库 --> <profile> <id>refresh-db</id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <configuration> <target> <property file="src/main/resources/application.development.properties" /> <property file="src/main/resources/application.properties" /> <sql driver="${jdbc.driver}" url="${jdbc.url}" userid="${jdbc.username}" password="${jdbc.password}" onerror="continue" encoding="${project.build.sourceEncoding}"> <classpath refid="maven.test.classpath" /> <transaction src="src\main\resources\sql\oracle\schema.sql" /> <transaction src="src\test\resources\data\oracle\import-data.sql" /> </sql> </target> </configuration> </plugin> </plugins> </build> </profile>
- 这里配置的两个sql,默认工程里是无法在oracle下运行的,需要稍微修改一下
drop table ss_task; drop table ss_user; create table ss_task ( id number(19,0), title varchar2(128) not null, description varchar2(255), user_id number(19,0) not null, primary key (id) ); create table ss_user ( id number(19,0), login_name varchar2(64) not null unique, name varchar2(64) not null, password varchar2(255) not null, salt varchar2(64) not null, roles varchar2(255) not null, register_date date not null, primary key (id) ); create sequence ss_seq_task start with 100 increment by 20; create sequence ss_seq_user start with 100 increment by 20;
/* Formatted on 2013/10/18 16:28 (Formatter Plus v4.8.8) */ INSERT INTO ss_task (ID, title, description, user_id ) VALUES (1, 'Study PlayFramework 2.0', 'http://www.playframework.org/', 2 ); INSERT INTO ss_task (ID, title, description, user_id ) VALUES (2, 'Study Grails 2.0', 'http://www.grails.org/', 2 ); INSERT INTO ss_task (ID, title, description, user_id ) VALUES (3, 'Try SpringFuse', 'http://www.springfuse.com/', 2 ); INSERT INTO ss_task (ID, title, description, user_id ) VALUES (4, 'Try Spring Roo', 'http://www.springsource.org/spring-roo', 2 ); INSERT INTO ss_task (ID, title, description, user_id ) VALUES (5, 'Release SpringSide 4.0', 'As soon as posibble.', 2 ); INSERT INTO ss_user (ID, login_name, NAME, PASSWORD, salt, ROLES, register_date ) VALUES (1, 'admin', 'Admin', '691b14d79bf0fa2215f155235df5e670b64394cc', '7efbd59d9741d34f', 'admin', TO_DATE ('2012-06-04 01:00:00','yyyy-mm-dd hh:mi:ss') ); INSERT INTO ss_user (ID, login_name, NAME, PASSWORD, salt, ROLES, register_date ) VALUES (2, 'user', 'Calvin', '2488aa0c31c624687bd9928e0a5d29e7d1ed520b', '6d65d24122c30500', 'user', to_date('2012-06-04 02:00:00','yyyy-mm-dd hh:mi:ss') );
- 这样配置就基本完成了,接下来运行quickstart\bin\refresh-db.bat 来实现初始化quickstart的数据库
- 然后有两种方式来启动项目,第一个就是直接运行工程bin目录下的jetty.bat,还有一个就是通过eclipse(含mvn插件)上的run as maven build,再在配置界面的goals里填入jetty:run
- 工程启动后通过,localhost:8080\quickstart即可访问,但基于oracle的项目启动后,创建任务会报id不能为空的错误,原因是task entity里的id 策略在oracle上无法自动产生id,于是需要更改entity包里的task.java
- 增加private long id;属性,再增加如下注释配置
@Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SS_SEQ") @SequenceGenerator(name="SS_SEQ",sequenceName="SS_SEQ_TASK",allocationSize=1) public Long getId() { return id; } public void setId(Long id) { this.id = id; }
- 重启项目,功能就都正常了