Apache Tapestry - Project Layout



Here is the layout of the source code created by Maven Quickstart CLI. Also, this is the suggested layout of a standard Tapestry Application.

 build.gradle 
 gradle 
    wrapper 
        gradle-wrapper.jar 
        gradle-wrapper.properties 
 gradlew 
 gradlew.bat 
 pom.xml 
 src 
    main 
       java 
          com 
              example 
                  MyFirstApplication 
                      components 
                      data 
                      entities 
                      pages 
                      services 
       resources 
          com 
             example 
                 MyFirstApplication 
                     components 
                     logback.xml 
                     pages 
                         Index.properties  
          hibernate.cfg.xml 
          log4j.properties
       webapp 
           favicon.ico 
           images 
              tapestry.png 
           mybootstrap 
              css 
                 bootstrap.css 
                 bootstrap-theme.css 
              fonts 
                    glyphicons-halflings-regular.eot 
                 glyphicons-halflings-regular.svg 
                 glyphicons-halflings-regular.ttf 
                 glyphicons-halflings-regular.woff 
                 glyphicons-halflings-regular.woff2 
              js 
           WEB-INF 
               app.properties 
               web.xml 
    site 
       apt 
          index.apt 
       site.xml 
    test 
        conf 
           testng.xml 
           webdefault.xml 
        java 
           PLACEHOLDER 
        resources 
            PLACEHOLDER 
 target     
    classes     
       com  
          example
              MyFirstApplication     
                  components     
                  data     
                  entities     
                  logback.xml     
                  pages 
                     Index.properties 
                  services     
       hibernate.cfg.xml 
       log4j.properties     
    m2e-wtp 
       web-resources 
           META-INF     
               MANIFEST.MF 
               maven 
                   com.example 
                      MyFirstApplication     
                         pom.properties 
                           pom.xml     
    test-classes 
       PLACEHOLDER 
    work         
       jsp         
       sampleapp.properties 
       sampleapp.script

The default layout is arranged like the WAR Internal File Format. Using WAR format helps to run the application without packaging and deploying. This layout is just a suggestion, but the application can be arranged in any format, if it is packaged into a proper WAR format while deploying.

The source code can be divided into the following four main sections.

  • Java Code − All java source codes are placed under /src/main/java folder. Tapestry page classes are placed under the Pages folder and Tapestry component classes are placed under components folder. Tapestry service classes are placed under services folder.

  • ClassPath Resources − In Tapestry, most of the classes have associated resources (XML Template, JavaScript files, etc.). These resources are placed under the /src/main/resources folder. Tapestry Page Classes have its associated resources under the Pages folder and Tapestry components classes have its associated resources under the Components folder. These resources are packaged into the WEB-INF/classes folder of the WAR.

  • Context Resources − They are static resources of a web application like Images, Style Sheet and JavaScript Library / Modules. They are usually placed under the /src/main/webapp folder and they are called Context Resources. Also, the web application description file (of Java Servlet), web.xml is placed under the WEB-INF folder of context resources.

  • Testing Code − These are optional files used to test the application and placed under the src/test/java and src/test/Resources Folders. They are not packaged into WAR.

Advertisements