# BuildingBlock项目结构

│  error.jsp
│
├─META-INF
│      BBCERT20.RSA
│      BBCERT20.SF
│      MANIFEST.MF
│
└─WEB-INF
    │  bb-context-config.properties
    │  bb-manifest.xml
    │  web.xml
    │
    ├─bundles
    │      bb-manifest-ar_SA.properties
    │      bb-manifest-cs_CZ.properties
    │      bb-manifest-cy_GB.properties
    │      bb-manifest-da_DK.properties
    │      bb-manifest-de_DE.properties
    │      bb-manifest-en_GB.properties
    │      bb-manifest-en_SA.properties
    │      bb-manifest-en_SC.properties
    │      bb-manifest-en_SM.properties
    │      bb-manifest-en_US.properties
    │      bb-manifest-en_US_k12.properties
    │      bb-manifest-en_US_pro.properties
    │      bb-manifest-es_ES.properties
    │      bb-manifest-fr_FR.properties
    │      bb-manifest-it_IT.properties
    │      bb-manifest-ja_JP.properties
    │      bb-manifest-ko_KR.properties
    │      bb-manifest-ms_MY.properties
    │      bb-manifest-nb_NO.properties
    │      bb-manifest-nl_NL.properties
    │      bb-manifest-pl_PL.properties
    │      bb-manifest-pt_BR.properties
    │      bb-manifest-ru_RU.properties
    │      bb-manifest-sv_SE.properties
    │      bb-manifest-th_TH.properties
    │      bb-manifest-tr_TR.properties
    │      bb-manifest-zh_CN.properties
    │      bb-manifest-zh_TW.properties
    │
    ├─classes
    │  └─blackboard
    │      ├─plugins
    │      │  └─sb
    │      │      │  SbLocalizationUtil.class
    │      │      │  SbManager$InstallOptions.class
    │      │      │  SbManager.class
    │      │      │  SbManagerFactory.class
    │      │      │  SbManagerImpl$1.class
    │      │      │  SbManagerImpl.class
    │      │      │
    │      │      ├─maven
    │      │      │      MavenDependencyManager$1.class
    │      │      │      MavenDependencyManager.class
    │      │      │      MavenResourceHolder.class
    │      │      │
    │      │      ├─response
    │      │      │      FailureResponse.class
    │      │      │      HelpResponse.class
    │      │      │      Response.class
    │      │      │      SuccessResponse.class
    │      │      │
    │      │      ├─servlet
    │      │      │      FileReceiverServlet.class
    │      │      │
    │      │      └─struts
    │      │              AbstractInstallAction.class
    │      │              HelpAction.class
    │      │              InstallAction.class
    │      │              InstallReportAction.class
    │      │              SharedForm.class
    │      │
    │      └─web
    │              error_jsp.class
    │
    ├─config
    │  └─struts
    │          struts-config.xml
    │
    └─lib
            aether-api-0.9.0.M3.jar
            aether-connector-basic-0.9.0.M3.jar
            aether-impl-0.9.0.M3.jar
            aether-spi-0.9.0.M3.jar
            aether-transport-file-0.9.0.M3.jar
            aether-transport-http-0.9.0.M3.jar
            aether-transport-wagon-0.9.0.M3.jar
            aether-util-0.9.0.M3.jar
            cdi-api-1.0.jar
            jcl-over-slf4j-1.6.2.jar
            jsch-0.1.44-1.jar
            jsr250-api-1.0.jar
            maven-aether-provider-3.1.0.jar
            maven-model-3.1.0.jar
            maven-model-builder-3.1.0.jar
            maven-repository-metadata-3.1.0.jar
            org.eclipse.sisu.inject-0.0.0.M2a.jar
            org.eclipse.sisu.plexus-0.0.0.M2a.jar
            plexus-classworlds-2.4.jar
            plexus-component-annotations-1.5.5.jar
            plexus-interactivity-api-1.0-alpha-6.jar
            plexus-interpolation-1.16.jar
            plexus-utils-3.0.10.jar
            sisu-guice-3.1.0-no_aop.jar
            wagon-provider-api-1.0.jar
            wagon-ssh-1.0.jar
            wagon-ssh-common-1.0.jar
  1. 标准的war包,满足WEB项目规范就行,用ant、maven、gradle构建都可以,甚至最原始的export也行
  2. 特异性强的jar包,可以放在WEB-INF下,例如国产的阿里系jar包,第三方的SDK等,因为Blackboard是多BuildingBlock集成在一起的,所以肯定会把共同性强的jar包拿到公用的lib下,比如Apache Commons、Guava之类的,这样的话,你项目也有人家也有,可能会因为版本号不同发生冲突
  3. 做项目时,如果你想把自己的产品卖给更多的Blackboard客户,那么我建议你最好不要用JDK1.8做,因为目前国内外还有很多Blackboard老版本的平台用的是JDK1.6,拿1.6编译的BuildingBlock可以到处装,但是1.8的只能装2016年以后的新平台上了

# BuildingBlock项目最重要的文件

  1. bb-mainfest.xml 是最重要的,插件类的项目都需要有
  2. bundles 在WEB-INF下直接建这个文件夹,可与很好的兼容平台自身的多语言