|:------------------------------------------------------:|
| ⚡︎ B o x L a n g ⚡︎
| Dynamic : Modular : Productive
|:------------------------------------------------------:|
Copyright Since 2023 by Ortus Solutions, Corp
www.boxlang.io | www.ortussolutions.com
This template can be used to create Ortus based BoxLang Modules. To use, just click the Use this Template
button in the github repository: https://github.com/boxlang-modules/module-template and run the setup task from where you cloned it.
box task run taskFile=src/build/SetupTemplate
The SetupTemplate
task will ask you for your module name, id and description and configure the template for you! Enjoy!
Here is a brief overview of the directory structure:
.github/workflows
- These are the github actions to test and build the module via CIbuild
- This is a temporary non-sourced folder that contains the build assets for the module that gradle producesgradle
- The gradle wrapper and configurationsrc
- Where your module source code lives.cfformat.json
- A CFFormat using the Ortus Standards.editorconfig
- Smooth consistency between editors.gitattributes
- Git attributes.gitignore
- Basic ignores. Modify as needed..markdownlint.json
- A linting file for markdown docs.ortus-java-style.xml
- Ortus Java Style for IntelliJ, VScode, Eclipse.box.json
- The box.json for your module used to publish to ForgeBoxbuild.gradle
- The gradle build file for the modulechangelog.md
- A nice changelog tracking fileCONTRIBUTING.md
- A contribution guidelinegradlew
- The gradle wrappergradlew.bat
- The gradle wrapper for windowsModuleConfig.cfc
- Your module's configuration. Modify as needed.readme.md
- Your module's readme. Modify as needed.settings.gradle
- The gradle settings file
Here is a brief overview of the source directory structure:
build
- Build scripts and assetsmain
- The main module source codebx
- The BoxLang source codeModuleConfig.bx
- The BoxLang module configurationbifs
- BoxLang built-in functionscomponents
- BoxLang componentsconfig
- BoxLang configuration, schedulers, etc.interceptors
- BoxLang interceptorslibs
- Java libraries to use that are NOT managed by gradlemodels
- BoxLang models
java
- Java source coderesources
- Resources for the module placed in final jar
test
bx
- The BoxLang test codejava
- Java test coderesources
- Resources for testinglibs
- BoxLang binary goes here for now.
The project name is defined in the settings.gradle
file. You can change it there.
The project version, BoxLang Version and JDK version is defined in the build.gradle
file. You can change it there.
Before you get started, you need to run the downloadBoxLang
task in order to download the latest BoxLang binary until we publish to Maven.
gradle downloadBoxLang
This will store the binary under /src/test/resources/libs
for you to use in your tests and compiler. Here are some basic tasks
Task | Description |
---|---|
build |
The default lifecycle task that triggers the build process, including tasks like clean , assemble , and others. |
clean |
Deletes the build folders. It helps ensure a clean build by removing any previously generated artifacts. |
compileJava |
Compiles Java source code files located in the src/main/java directory |
compileTestJava |
Compiles Java test source code files located in the src/test/java directory |
dependencyUpdates |
Checks for updated versions of all dependencies |
downloadBoxLang |
Downloads the latest BoxLang binary for testing |
jar |
Packages your project's compiled classes and resources into a JAR file build/libs folder |
javadoc |
Generates the Javadocs for your project and places them in the build/docs/javadoc folder |
serviceLoader |
Generates the ServiceLoader file for your project |
spotlessApply |
Runs the Spotless plugin to format the code |
spotlessCheck |
Runs the Spotless plugin to check the formatting of the code |
tasks |
Show all the available tasks in the project |
test |
Executes the unit tests in your project and produces the reports in the build/reports/tests folder |
Please use the src/test
folder for your unit tests. You can either test using TestBox o JUnit if it's Java.
The github actions will clone, test, package, deploy your module to ForgeBox and the Ortus S3 accounts for API Docs and Artifacts. So please make sure the following environment variables are set in your repository.
Please note that most of them are already defined at the org level
FORGEBOX_TOKEN
- The Ortus ForgeBox API TokenAWS_ACCESS_KEY
- The travis user S3 accountAWS_ACCESS_SECRET
- The travis secret S3
Please contact the admins in the
#infrastructure
channel for these credentials if needed
BoxLang is a professional open-source project and it is completely funded by the community and Ortus Solutions, Corp. Ortus Patreons get many benefits like a cfcasts account, a FORGEBOX Pro account and so much more. If you are interested in becoming a sponsor, please visit our patronage page: https://patreon.com/ortussolutions
"I am the way, and the truth, and the life; no one comes to the Father, but by me (JESUS)" Jn 14:1-12