- Index

< Previous |  | Next >

# What Goes Where in Project Folders

Maven requires a strict organization of files within the project hierarchy. You must organize files of different types into the folders reserved for them by the Maven project structure.

### Note

Throughout this page, the term packagename refers to the project's GroupId + ArtifactId, and takes a form such as `com.example.deptname.`artifactid``. This is established when you run the File → New → StreamBase Project wizard or the upgrade wizard, and applies to all fragment types and StreamBase Application projects.

A typical StreamBase project folder for an EventFlow fragment has the structure shown in the following image:

A LiveView fragment project adds `src/main/liveview` to this structure.

## Project Folder Contents

src/main/eventflow/`packagename`

  The following StreamBase file types belong in the ``packagename`` folder under `src/main/eventflow`:

  - EventFlow module files with `.sbapp` extension.

  - EventFlow module layout files with `.sblayout` extension.

  - StreamSQL module files with `.ssql` extension.

  - StreamBase Interface files with `.sbint` extension.

  Files in this folder are automatically on Maven's module search path.

  You can add subfolders or child folders to the ``packagename`` folder to organize your files into different packages. To create a new folder in a StreamBase Maven project:

  1. Select the `packagename` folder for your project under `src/main/eventflow`.

  2. Right-click and select New → Folder.

  This creates a subfolder that is automatically in the Maven module resource path.

src/main/eventflow/lvinterfaces

  This folder is found in LiveView projects only, and is created when you run StreamBase → Generate LiveView Interfaces from the context menu of a LiveView project folder. This folder contains StreamBase interface files with `.sbint` extension that are generated to define the schemas of LiveView tables.

src/main/liveview

  This folder is found in LiveView fragment projects only. The following LiveView file type belongs in the `src/main/liveview` folder:

  - LiveView configuration files with `.lvconf` extension.

  Configuration files in this folder are compiled into LiveView tables when you run the LiveView project.

  The File → New → StreamBase Project wizard and upgrade wizard also create two subfolders:

  - `lv-user-webapps`, which is a container for customer-provided JavaScript code that enables customer-specific web interfaces for LiveView server. This subfolder is also the container for the `lvweb.war` file that adds TIBCO LiveView™ Web functionality to a LiveView project.

  - `lv-web`, which is a container for customer-provided LiveView Web extension code in `lv-web/plugins` and `lv-web/themes`.

  If the legacy project upgrade wizard finds LiveView configuration files in subfolders of the legacy project, it creates the matching subfolder in `src/main/liveview` to contain those files.

src/main/configurations

  Place all HOCON configuration files in `src/main/configurations`:

  - HOCON configuration files must use the extension `.conf`.

  - Use any basename for each HOCON file that reminds you of its contents.

  - The actual HOCON type for each file is specified in the `type=` line near the top of the file. This is why having several HOCON files in the same folder does not create conflicts.

  - Certain configuration files are generated for you by the New → StreamBase Project wizard or upgrade wizard, such as `engine.conf` or `fragment.conf`. These are generally templates that provide the structure of a configuration file without setting any parameters.

src/test/configurations

  This folder contains HOCON configuration files that are to be considered when running unit tests for the current project.

src/main/java/`packagename`

  If your project includes Java files that implement a StreamBase extension such as a custom function, custom operator, or custom adapter, place those files in the `packagename` folder under `src/main/java`.

  You can organize your Java files into different packages using New → Package from the `packagename` folder's context menu.

src/main/resources

  The following file types belong in the `src/main/resources` folder. Files in this folder are automatically on the Maven resource search path.

  - StreamBase Feed Simulation files with `.sbfs` extension.

  - Any CSV file used as input for a feed simulation, or used by any operator or adapter.

  - Image files used as custom icon overlays for Module Reference and Extension Point operators.

  - SQL scripts used to connect to a JDBC resource.

  - Decision Table files in both `.sbdt` and `.xslx` formats.

  - Decision Table Domain Model files with `.json` extension.

  - In general, any file that needs to be opened and used by any operator or adapter while your StreamBase application is running.

  - Adapter configuration XML files used by certain StreamBase adapters such as EMS and JMS adapters. These files are named `adapter-configurations.xml` that have `<adapter-configurations>` as the top-level element.

  In general, files must be at the root of `src/main/resources` to be automatically in the Maven resource path. You can organize resource files into subfolders, and reference files with a relative path name such as `subdir/myresourcefile`. However, chooser dialogs in StreamBase Studio do not descend into subfolders to show their list of resource files.

src/test/java/`packagename`

  This folder holds StreamBase JUnit test files that are run with the Maven Test goal. The New Project wizard generates the skeleton of such a file and places it in the `packagename` folder under `src/main/java`. You must complete this file to get a working test. Add other test files as your project grows with more EventFlow modules.

src/test/resources

  This folder holds any test-specific resource files needed by the StreamBase JUnit test files you want to run. The New Project wizard generates a skeleton `logback.xml` file in this folder for you to customize as needed.

  Resource file types for tests are any of the same file types described above for src/main/resources.

Supporting JAR Files

  Certain adapters and operators require access to implementing JAR files, which are sometimes publicly available and sometimes proprietary. For example, the JDBC Table data construct requires information about the vendor-provided JAR file or files that implement JDBC access to that vendor's database system.

  See Using External JAR Files for a discussion of the placement options for such JAR files.

## Underlying Project File System

When you use an Eclipse-native feature such as File → Move, or when you use File → Export to archive a project, you may be surprised to see that the dialogs for these features show that the project folder in reality contains only `src` and `target` folders.

This is because the folder names described in the previous section are created with an Eclipse convenience link feature that is much like file system symbolic links. Using these linked folder names saves you from having to navigate down long folder paths such as `src/main/eventflow/com/tibco/sb/sample/firstapp` to locate files.