当前位置:  编程技术>软件工程/软件设计
本页文章导读:
    ▪Play framework 2.1 新功能 sub-projects       你可以让你的应用依赖一个简单的库工程。要做的只是在你的‘project/Build.scala’构建文件里面添加一个新的工程定义: 当你在你的build 里面启用sub-project ,你可以只关注于这个子项目,单.........
    ▪系统中常用操作基类(SSH项目中)非常非常经典的部分      package com.css.common.hibernate3;   import java.io.Serializable; import java.util.List; import java.util.Map;     /**  * DB层的Dao-接口类 <br/>  *  * @author何青  */ publicinterfaceGenericHibernateDao&l.........
    ▪文件系统FatFsR0.09a翻译(三):ff.h       //本译文只供学习使用,未经作者许可,不得用于其它任何用途   //译者:xiaofeng //修改日期:2013/03/19 //版本:V1.0 //版权所有,盗版必究。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20.........

[1]Play framework 2.1 新功能 sub-projects
    来源: 互联网  发布时间: 2013-11-19

一个复杂的项目不一定只有一个Play 应用组成。你可以把一个大项目分成几个小的应用,甚至你可以把一些和Play 应用没关系的逻辑提取到一些标准的JAVA 或SCALA 类库里面。

阅读这篇文章 SBT documentation on multi-project builds.可以获得更多的帮助。sub-projects 没有它们自己的构建文件,它们和它们的父工程共享构建文件。

添加一个简单的 sub-project

你可以让你的应用依赖一个简单的库工程。要做的只是在你的‘project/Build.scala’构建文件里面添加一个新的工程定义:

import sbt._
import Keys._
import play.Project._
object ApplicationBuild extends Build {
  val appName         = "my-first-application"
  val appVersion      = "1.0"
  val appDependencies = Seq(
    //if it's a java project add javaCore, javaJdbc, jdbc etc.
  )
  val mySubProject = Project("my-library", file("myLibrary"))
  val main = play.Project(
    appName, appVersion, appDependencies, path = file("myProject")
  ).dependsOn(mySubProject)
}

在这里我们在应用的‘myLibrary’文件夹里定义了一个 sub-project。这个 sub-project 是一个标准的sbt 工程,使用默认的layout:

myProject
 └ app
 └ conf
 └ public
myLibrary
 └ src
    └ main
       └ java
       └ scala
project
 └ Build.scala

当你在你的build 里面启用sub-project ,你可以只关注于这个子项目,单独编译测试运行它。可以在Play 控制台输入 project 命令来列出所有的项目。

[my-first-application] $ projects
[info] In file:/Volumes/Data/gbo/myFirstApp/
[info]   * my-first-application
[info]     my-library

默认的项目是项目名按字母排序的地一个项目。你可以使用aaaMain 命令来使用你的主要项目。你可以使用 project 命令来改变当前工程。

[my-first-application] $ project my-library
[info] Set current project to my-library

当你在开发模式下运行Play 应用,依赖的项目会自动编译,如果编译失败,你依然可以在浏览器里看到相关信息。

把你的web分成几个小web

由于Play 应用只是一个含有默认配置文件的标准的sbt 工程,所以它可以依赖其它的Play 应用。

这个配置和之前的非常接近。配置你的 sub-project 就像配置 play.Project 一样简单。

import sbt._
import Keys._
import play.Project._
    object ApplicationBuild extends Build {
      val appName = "zenexity.com"
      val appVersion = "1.2"
      val common = play.Project(
           appName + "-common", appVersion, path = file("common")
      )

      val website = play.Project(
          appName + "-website", appVersion, path = file("website")
      ).dependsOn(common)

      val adminArea = play.Project(
          appName + "-admin", appVersion, path = file("admin")
      ).dependsOn(common)

      val main = play.Project(
         appName, appVersion, path = file("main")
      ).dependsOn(
         website, adminArea
      )
}

这里我们定义了一完整的被分割成两个部分的项目:website 部分和 admin 部分。这两个部分通过一个common 模块彼此依赖。

如果你想在编译测试主工程时同时依赖的子项目也重新编译和测试,那么你需要添加一个 “aggregate”选项。

val main = PlayProject(
  appName, appVersion
).dependsOn(
  website, adminArea
).aggregate(
  website, adminArea
)

注意:为了避免名字冲突,请确保你的sub-projects 的 controller 包括 Assets controller 使用和主项目不同的命名空间。

分割route文件

由于 play 2.1 支持把 route 文件分割成为几部分。如果你想构建一个健壮的,可重用的多模块的Play 应用,这是一个非常方便的特性。

考虑一以下构建文件

project/Build.scala

import sbt._
import Keys._
import play.Pr      
    
[2]系统中常用操作基类(SSH项目中)非常非常经典的部分
    来源: 互联网  发布时间: 2013-11-19

package com.css.common.hibernate3;

 

import java.io.Serializable;

import java.util.List;

import java.util.Map;

 

 

/**

 * DB层的Dao-接口类 <br/>

 *

 * @author何青

 */

publicinterfaceGenericHibernateDao<T> {

    /**

     *添加一个对象

     * @param t

     * @throws Exception

     */

    publicvoid save(T t) throws Exception;

 

    /**

     * 更新一对象

     * @param t

     * @throws Exception

     */

    publicvoid update(T t) throws Exception;

 

    /**

     * 加载一对象

     * @param id

     * @return T

     * @throws Exception

     */

    public T load(Serializable id) throws Exception;

 

    /**

     * 获取一对象

     * @param id

     * @return T

     * @throws Exception

     */

    public T get(Serializable id) throws Exception;

 

    /**

     * 删除一个对象

     * @param o

     * @throws Exception

     */

    publicvoid remove(Object o) throws Exception;

   

    /**

     * 将传入的游离状态的对象的属性复制到持久化对象中,并返回该持久化对象。 

     * 如果该session中没有关联的持久化对象,加载一个,如果传入对象未保存,保存一个副本并作为持久对象返回,传入对象依然保持游离状态

     * @param entity POJO实体

     * @return持久化对象

     * @throws Exception

     */

    public Object merge(Object entity) throws Exception;

 

    /**

     * 执行本地SQL语句

     * 【注意:不能执行Select查询语句】

     * @param sql

     * @throws Exception

     */

    publicvoid executeSQL(St

    
[3]文件系统FatFsR0.09a翻译(三):ff.h
    来源: 互联网  发布时间: 2013-11-19

//本译文只供学习使用,未经作者许可,不得用于其它任何用途  

//译者:xiaofeng

//修改日期:2013/03/19

//版本:V1.0

//版权所有,盗版必究。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139

    
最新技术文章:
 




特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3