Java快速开发框架实践

最近的两周找了一些快速开发框架做了些尝试,一下是尝试后的一些心得。

 

第一个尝试的是 springside3.3.2 ,上手很容易,提供了简单的应用。但是一个十分严重的问题是它的代码生成问题。没有代码生成便没有快速开发,对于我这样一个懒人来说,这不是一个很好的选择。令我奇怪的是 springside 以前的版本曾经有过基于 acegi 的使用数据库的授权系统,不知道为什么换成了基于 XML 配置的。可能是跟 Appfuse Spring Roo 学习的吧。

关于它的搭建:

十分简单,只要下载 maven springside-3.3.2-all-in-one 包并正确安装,一切都十分的顺利。

Mvn-eclipse 插件的版本较低 2.0 ,但是不会出现莫名其妙的错误。

 

第二个尝试的是 Appfuse ,传说中的东西。但是令我十分失望的是,它最新的版本 2.1.0 -M1 没有提供以前一样详尽的文档,能够找到的文档资料大多是基于 ant 构建的,也就是 2.0 以前的版本的文档。 Appfuse 提供了工程的模板,但是发现只有 base 的情况下工程的目录是贴近实际开发的,并且此时的 pom 文件中的配置是最实用的。如果选择 light ,那么 pom 文件中要自己配置很多插件。

关于它的搭建:

这个东西的搭建过程中出现了很多的问题:

第一:中文资源文件的转码问题

这个问题是因为Appfuse默认的Maven的转码插件配置中少配置了中文资源文件导致的,只要将中文资源文件添加进去就可以了

          <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>native2ascii-maven-plugin</artifactId>
                <version>1.0-alpha-1</version>
                <configuration>
                    <dest>target/classes</dest>
                    <src>src/main/resources</src>
                </configuration>
                <executions>
                    <execution>
                        <id>native2ascii-utf8</id>
                        <goals>
                            <goal>native2ascii</goal>
                        </goals>
                        <configuration>
                            <encoding>UTF8</encoding>
                            <includes>ApplicationResources_ko.properties,
                                ApplicationResources_no.properties,
                                ApplicationResources_tr.properties, 
                                *_zh*.properties
                            </includes>
                        </configuration>
                    </execution>
                    <execution>
                        <id>native2ascii-8859_1</id>
                        <goals>
                            <goal>native2ascii</goal>
                        </goals>
                        <configuration>
                            <encoding>8859_1</encoding>
                            <includes>ApplicationResources_de.properties,
                                ApplicationResources_fr.properties,
                                ApplicationResources_nl.properties,
                                ApplicationResources_pt*.properties</includes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>



             <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>ApplicationResources_de.properties</exclude>
                    <exclude>ApplicationResources_fr.properties</exclude>
                    <exclude>ApplicationResources_ko.properties</exclude>
                    <exclude>ApplicationResources_nl.properties</exclude>
                    <exclude>ApplicationResources_no.properties</exclude>
                    <exclude>ApplicationResources_pt*.properties</exclude>
                    <exclude>ApplicationResources_tr.properties</exclude>
                    <exclude>*_zh*.properties</exclude>
                    <exclude>applicationContext-resources.xml</exclude>
                    <exclude>struts.xml</exclude>
                </excludes>
                <filtering>true</filtering>
            </resource>

 

第二:Eclipse工程配置生成问题

如果直接使用

mvn eclipse:eclipse
 

那么很不幸的你会得到失败的提示,找了一下原因:

            <plugin>
                <artifactId>maven-eclipse-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <additionalProjectnatures>
                        <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
                    </additionalProjectnatures>
                    <additionalBuildcommands>
                        <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
                    </additionalBuildcommands>
                    <downloadSources>true</downloadSources>
                    <downloadJavadocs>true</downloadJavadocs>
                    <wtpversion>1.5</wtpversion>
                </configuration>
            </plugin>
 

将此段修改就可以了,版本号使用2.6的不会发生问题,2.7与2.8都会导致失败

 

第三:代码生成的问题

这里面的问题多多,不但涉及到Maven的插件问题,还有文档的问题。貌似Appfuse的开发团队想要依靠服务赚钱了,所以文档是简单的有些过头了。

 

最后尝试的是Spring Roo,一个新生儿。但是它给我带来了惊喜。目前的发行版本是1.10M2,不推荐使用,因为在使用中发现了很多问题。使用1.0.2版本的Roo一切都很顺利。最值得一提的是它的代码生成功能,堪称完美。有人说ROR的脚手架是最好用的,我没有使用过ROR,但是我使用Roo的时候发现它的生成功能比Grails还要强大。它甚至可以生成要使用的查询条件。

 

搭建中的问题:

第一:GBK编码拷贝资源的问题

这个问题很好解决,在生成的pom文件中增加插件即可解决:

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-resources-plugin</artifactId>
	<version>2.4.2</version>
	<configuration>
		<encoding>UTF-8</encoding>
	</configuration>
</plugin>
 

第二:log4j的配置问题,这个其实很好解决。Roo已经提供了配置这个文件的shell命令,但是那样配置很麻烦,直接在src\main\resources\META-INF\spring下拷贝过去一个配置好的log4j.properties就可以了。

 

第三:修改已经生成的文件以实现功能:

这个问题是我觉得比较复杂的问题,因为Roo太智能了,并且用来生成最终执行二进制文件的辅助文件没有在IDE中显示出来。我使用的是STS,没有使用标准的Eclipse,所以不知道是不是都是这个情况。想修改源码,那么只能到文件系统中找到.aj结尾的文件修改。可能Roo的初衷就是大家再也不必去修改代码了。

 

第四:去除Roo的升级

这个是个大问题,因为Roo的版本升级需要完全去除上一个版本的东西,包括pom中的很多东西完全的不兼容,因此,升级是个大问题。

 

第五:一个最最让我困惑的问题

很多人都试用过了Roo,但是我没发现别人跟我一样遇到了中文输入的问题,可能是的版本或者其他配置的问题。最后在我更改了如下代码后,一切都正常了,中文不再是火星文了

                      <plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.0.2</version>
				<configuration>
					<source>1.6</source>
					<target>1.6</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>

 这个问题我深入的思考了下,可能还跟我的数据库有关,我使用MySQL的时候出现了乱码,但是同样的库Appfuse一切正常

 

另外值得一提的是,Spring Roo的文档虽然是英文的,但是基本想要的东西都能找到。文档附录中有命令的详解。

你可能感兴趣的:(java,eclipse,maven,框架,Appfuse)