
airbase
Base POM for Airlift
Stars: 51

Airbase is a Maven project management tool that provides a parent pom structure and conventions for defining new projects. It includes guidelines for project pom structure, deployment to Maven Central, project build and checkers, well-known dependencies, and other properties. Airbase helps in enforcing build configurations, organizing project pom files, and running various checkers to catch problems early in the build process. It also offers default properties that can be overridden in the project pom.
README:
Add Airbase as the parent to a project:
<parent>
<groupId>io.airlift</groupId>
<artifactId>airbase</artifactId>
<version> ... current pom release version ...</version>
</parent>
The following elements should be present in a pom using Airbase as parent:
-
groupId
,artifactId
,version
,packaging
,name
,description
andinceptionYear
Define the new project. These elements should always be present. If any of those fields are missing from the project, the values from Airbase are picked up instead.
-
scm
Defines the SCM location and URL for the project. This is required to use the
release:prepare
andrelease:perform
targets to deploy artifacts to Maven Central. -
organization
,developers
,distributionManagement
Empty elements override the values inherited from Airbase.
This is a sample skeleton pom using Airbase:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>io.airlift</groupId>
<artifactId>airbase</artifactId>
<version> ... current version ...</version>
</parent>
<groupId> ... group id of the new project ... </groupId>
<artifactId> ... artifact id of the new project ... </artifactId>
<version> ... version of the new project ... </version>
<packaging> ... jar|pom ... </packaging>
<description> ... description of the new project ... </description>
<name>${project.artifactId}</name>
<inceptionYear>2013</inceptionYear>
<scm>
<connection> ... scm read only connection ... </connection>
<developerConnection>... scm read write connection ... </developerConnection>
<url> ... project url ... </url>
</scm>
<distributionManagement/>
<developers/>
<organization/>
...
</project>
In large maven projects, especially with multi-module builds, the pom files can become quite large. In many places, properties defined in the <properties>
section of the pom are used.
To avoid confusion with properties, the following conventions are used in Airbase:
- Properties defined in the POM that influence the build configuration are prefixed with
air
. - Properties that factor out plugin versions (because the plugin is used in multiple places in the POM and the versions should be uniform) start with
dep.plugin
and end withversion
. - Properties that factor out dependency versions (to enforce uniform dependency versions across multiple, related dependencies) start with
dep
and end withversion
.
Examples:
<properties>
<!-- Sets the minimum maven version to build (influences build) -->
<air.maven.version>3.0.4</air.maven.version>
<!-- The surefire plugin version -->
<dep.plugin.surefire.version>2.13</dep.plugin.surefire.version>
<!-- The version for all guice related dependencies -->
<dep.guice.version>3.0</dep.guice.version>
<properties>
Airbase is intended for open source projects that should be deployed to Maven Central.
As described in the OSSRH Guide, the ossrh
repository must be configured:
<servers>
...
<server>
<id>ossrh</id>
<username>user</username>
<password>password</password>
</server>
...
</servers>
Airbase hooks various checkers into the build lifecycle and executes them on each build.
Generally speaking, running a set of checks at each build is a good way to catch problems early and any problem reported by a checker should be treated as something that needs to be fixed before releasing.
Checkers are organized in two groups, basic and extended.
- Maven Enforcer (http://maven.apache.org/enforcer/maven-enforcer-plugin/)
- Maven Dependencies (http://maven.apache.org/plugins/maven-dependency-plugin/)
- Maven Duplicate finder (https://github.com/basepom/duplicate-finder-maven-plugin)
- Maven Dependency scope (https://github.com/basepom/maven-plugins)
- SpotBugs (https://spotbugs.github.io/)
- PMD (http://maven.apache.org/plugins/maven-pmd-plugin/)
- License check (http://code.mycila.com/license-maven-plugin/)
- Code coverage (http://www.eclemma.org/jacoco/trunk/doc/maven.html)
- Modernizer (https://github.com/andrewgaul/modernizer-maven-plugin)
- Checkstyle (https://maven.apache.org/plugins/maven-checkstyle-plugin/)
All checkers are enabled by default and will fail the build if a problem is encountered.
Each checker has a switch to turn it on or off and also whether a problem will be a warning or fatal to the build.
...
<properties>
<!-- Do not run the duplicate finder --->
<air.check.skip-duplicate-finder>true</air.check.skip-duplicate-finder>
</properties>
...
The following switches exist:
Group | Check | Skip check (Setting to true skips the check) | Fail build (Setting to false only reports a warning) |
---|---|---|---|
Basic | Maven Enforcer | air.check.skip-enforcer | air.check.fail-enforcer |
Basic | Maven Dependencies | air.check.skip-dependency | air.check.fail-dependency |
Basic | Maven Duplicate finder | air.check.skip-duplicate-finder | air.check.fail-duplicate-finder |
Basic | Maven Dependency scope | air.check.skip-dependency-scope | air.check.fail-dependency-scope |
Extended | SpotBugs | air.check.skip-spotbugs | air.check.fail-spotbugs |
Extended | PMD | air.check.skip-pmd | air.check.fail-pmd |
Extended | License check | air.check.skip-license | air.check.fail-license |
Extended | Code coverage | air.check.skip-jacoco | air.check.fail-jacoco |
Extended | Modernizer | air.check.skip-modernizer | air.check.fail-modernizer |
Extended | Checkstyle | air.check.skip-checkstyle | air.check.fail-checkstyle |
Checks can be turned on and off in groups:
Group | Skip checks | Fail build |
---|---|---|
All Checks | air.check.skip-all | air.check.fail-all |
All Basic checks | air.check.skip-basic | air.check.fail-basic |
All Extended Checks | air.check.skip-extended | air.check.fail-extended |
A more specific setting (checker specific, then group, then all) overrides a more general setting:
...
<properties>
<air.check.skip-all>true</air.check.skip-all>
<air.check.skip-duplicate-finder>false</air.check.skip-duplicate-finder>
</properties>
...
will skip all checks except the duplicate finder.
To ensure that a project has an uniform license header in all source files, the Maven license plugin can be used to check and format license headers.
The plugin expects the license header file as src/license/LICENSE-HEADER.txt
in the root folder of a project.
For a multi-module project, this file should exist only once, in the root pom of the project. In all other sub-modules, add
<properties>
<air.main.basedir>${project.parent.basedir}</air.main.basedir>
</properties>
to each pom. This is a limitation of the Maven multi-module build process (see http://stackoverflow.com/questions/1012402/maven2-property-that-indicates-the-parent-directory for details).
The Enforcer plugin outlaws a number of dependencies that project might use for various reasons:
Outlawed dependency | Rationale | What to use |
---|---|---|
commons-logging:commons-logging-api | Ill-fated attempt to split commons-logging implementation and commons-logging API. | commons-logging:commons-logging |
junit:junit | Has all its dependencies packed inside, therefore leads to duplicate classes. | junit:junit-dep |
com.google.collections:google-collections | Superseded by Guava, duplicate classes with Guava. | com.google.guava:guava |
com.google.code.findbugs:annotations | Contains FindBugs annotations, JSR-305 and JCIP annotations. | com.github.spotbugs:spotbugs-annotations com.google.code.findbugs:jsr305 |
org.eclipse.jetty.orbit:javax.servlet javax.servlet:javax.servlet-api |
Unsupported variants of Servlet API jar. | org.eclipse.jetty.toolchain:jetty-jakarta-servlet-api |
Airbase provides a number of dependencies to projects. These dependencies are considered "well known and stable". When a project wants to use any of these dependencies, it can declare them in the project <dependencies>
section without a version and automatically pick it up from Airbase.
Airbase provides versions for the following well-known dependencies:
Dependency name | Group/Artifact Ids |
---|---|
Google Guice | com.google.inject:guice com.google.inject.extensions:guice-servlet com.google.inject.extensions:guice-assistedinject com.google.inject.extensions:guice-throwingproviders |
Google Guava | com.google.guava:guava |
Joda Time | joda-time:joda-time |
Jakarta EE Inject API | jakarta.inject:jakarta.inject-api |
Jakarta EE Servlet API | org.eclipse.jetty.toolchain:jetty-jakarta-servlet-api |
Java Validation API | javax.validation:validation-api |
slf4j (Simple Logging Facade for Java) | org.slf4j:slf4j-api org.slf4j:slf4j-nop org.slf4j:slf4j-simple org.slf4j:slf4j-ext org.slf4j:jcl-over-slf4j org.slf4j:jul-to-slf4j org.slf4j:log4j-over-slf4j org.slf4j:slf4j-jdk14 |
Logback | ch.qos.logback:logback-core ch.qos.logback:logback-classic |
Jackson | com.fasterxml.jackson.core:jackson-annotations com.fasterxml.jackson.core:jackson-core com.fasterxml.jackson.core:jackson-databind com.fasterxml.jackson.datatype:jackson-datatype-guava com.fasterxml.jackson.datatype:jackson-datatype-joda com.fasterxml.jackson.dataformat:jackson-dataformat-smile |
Bean Validation Framework | org.apache.bval:bval-jsr |
JmxUtils | org.weakref:jmxutils |
Joda Time | joda-time:joda-time |
FindBugs / SpotBugs Annotations | com.github.spotbugs:spotbugs-annotations |
JSR-305 Annotations | com.google.code.findbugs:jsr305 |
TestNG testing | org.testng:testng |
AssertJ | org.assertj:assertj-core |
Airlift Slice | io.airlift:slice |
These are default properties that affect some aspects of the build. All of them can be overriden in the <properties>
section of the project pom.
By default, Airbase enforces JDK 1.8. To use another version, add
<properties>
<project.build.targetJdk>1.6</project.build.targetJdk>
...
</properties>
Sets the default heap size for the compiler, javadoc generation and other plugins. Default is 1024M.
When a project creates a release using the maven-release-plugin and mvn release:prepare
, this switch controls whether the generated tags, modified POM files etc. are pushed automatically to the upstream repository or not. Default is false
(do not push the changes).
The minimum version of Maven to build a project. Default is "3.0".
The 'root' directory of a project. For a simple project, this is identical to project.basedir
. In a multi-module build, it should point at the root project.
For a multi-module project, all other sub-modules must have this explicitly set to the root directory and therefore the following code
<properties>
<air.main.basedir>${project.parent.basedir}</air.main.basedir>
</properties>
must be added to each pom. This is a limitation of the Maven multi-module build process (see http://stackoverflow.com/questions/1012402/maven2-property-that-indicates-the-parent-directory for details).
A module or sub-module can produce a tarball using the airlift packaging. This profile is activated by creating a file .build-airlift
in the root of the module or submodule. This file
can be empty. The tarball is attached as an additional artifact.
The necessary launchers from the airlift launcher package are included. The version of the launcher included is controlled by the dep.packaging.version
property.
For Tasks:
Click tags to check more tools for each tasksFor Jobs:
Alternative AI tools for airbase
Similar Open Source Tools

airbase
Airbase is a Maven project management tool that provides a parent pom structure and conventions for defining new projects. It includes guidelines for project pom structure, deployment to Maven Central, project build and checkers, well-known dependencies, and other properties. Airbase helps in enforcing build configurations, organizing project pom files, and running various checkers to catch problems early in the build process. It also offers default properties that can be overridden in the project pom.

chatgpt-subtitle-translator
This tool utilizes the OpenAI ChatGPT API to translate text, with a focus on line-based translation, particularly for SRT subtitles. It optimizes token usage by removing SRT overhead and grouping text into batches, allowing for arbitrary length translations without excessive token consumption while maintaining a one-to-one match between line input and output.

detoxify
Detoxify is a library that provides trained models and code to predict toxic comments on 3 Jigsaw challenges: Toxic comment classification, Unintended Bias in Toxic comments, Multilingual toxic comment classification. It includes models like 'original', 'unbiased', and 'multilingual' trained on different datasets to detect toxicity and minimize bias. The library aims to help in stopping harmful content online by interpreting visual content in context. Users can fine-tune the models on carefully constructed datasets for research purposes or to aid content moderators in flagging out harmful content quicker. The library is built to be user-friendly and straightforward to use.

nano-graphrag
nano-GraphRAG is a simple, easy-to-hack implementation of GraphRAG that provides a smaller, faster, and cleaner version of the official implementation. It is about 800 lines of code, small yet scalable, asynchronous, and fully typed. The tool supports incremental insert, async methods, and various parameters for customization. Users can replace storage components and LLM functions as needed. It also allows for embedding function replacement and comes with pre-defined prompts for entity extraction and community reports. However, some features like covariates and global search implementation differ from the original GraphRAG. Future versions aim to address issues related to data source ID, community description truncation, and add new components.

BodhiApp
Bodhi App runs Open Source Large Language Models locally, exposing LLM inference capabilities as OpenAI API compatible REST APIs. It leverages llama.cpp for GGUF format models and huggingface.co ecosystem for model downloads. Users can run fine-tuned models for chat completions, create custom aliases, and convert Huggingface models to GGUF format. The CLI offers commands for environment configuration, model management, pulling files, serving API, and more.

can-ai-code
Can AI Code is a self-evaluating interview tool for AI coding models. It includes interview questions written by humans and tests taken by AI, inference scripts for common API providers and CUDA-enabled quantization runtimes, a Docker-based sandbox environment for validating untrusted Python and NodeJS code, and the ability to evaluate the impact of prompting techniques and sampling parameters on large language model (LLM) coding performance. Users can also assess LLM coding performance degradation due to quantization. The tool provides test suites for evaluating LLM coding performance, a webapp for exploring results, and comparison scripts for evaluations. It supports multiple interviewers for API and CUDA runtimes, with detailed instructions on running the tool in different environments. The repository structure includes folders for interviews, prompts, parameters, evaluation scripts, comparison scripts, and more.

AgentPoison
AgentPoison is a repository that provides the official PyTorch implementation of the paper 'AgentPoison: Red-teaming LLM Agents via Memory or Knowledge Base Backdoor Poisoning'. It offers tools for red-teaming LLM agents by poisoning memory or knowledge bases. The repository includes trigger optimization algorithms, agent experiments, and evaluation scripts for Agent-Driver, ReAct-StrategyQA, and EHRAgent. Users can fine-tune motion planners, inject queries with triggers, and evaluate red-teaming performance. The codebase supports multiple RAG embedders and provides a unified dataset access for all three agents.

chatgpt-cli
ChatGPT CLI provides a powerful command-line interface for seamless interaction with ChatGPT models via OpenAI and Azure. It features streaming capabilities, extensive configuration options, and supports various modes like streaming, query, and interactive mode. Users can manage thread-based context, sliding window history, and provide custom context from any source. The CLI also offers model and thread listing, advanced configuration options, and supports GPT-4, GPT-3.5-turbo, and Perplexity's models. Installation is available via Homebrew or direct download, and users can configure settings through default values, a config.yaml file, or environment variables.

LEADS
LEADS is a lightweight embedded assisted driving system designed to simplify the development of instrumentation, control, and analysis systems for racing cars. It is written in Python and C/C++ with impressive performance. The system is customizable and provides abstract layers for component rearrangement. It supports hardware components like Raspberry Pi and Arduino, and can adapt to various hardware types. LEADS offers a modular structure with a focus on flexibility and lightweight design. It includes robust safety features, modern GUI design with dark mode support, high performance on different platforms, and powerful ESC systems for traction control and braking. The system also supports real-time data sharing, live video streaming, and AI-enhanced data analysis for driver training. LEADS VeC Remote Analyst enables transparency between the driver and pit crew, allowing real-time data sharing and analysis. The system is designed to be user-friendly, adaptable, and efficient for racing car development.

Construction-Hazard-Detection
Construction-Hazard-Detection is an AI-driven tool focused on improving safety at construction sites by utilizing the YOLOv8 model for object detection. The system identifies potential hazards like overhead heavy loads and steel pipes, providing real-time analysis and warnings. Users can configure the system via a YAML file and run it using Docker. The primary dataset used for training is the Construction Site Safety Image Dataset enriched with additional annotations. The system logs are accessible within the Docker container for debugging, and notifications are sent through the LINE messaging API when hazards are detected.

stable-diffusion-webui
Stable Diffusion WebUI Docker Image allows users to run Automatic1111 WebUI in a docker container locally or in the cloud. The images do not bundle models or third-party configurations, requiring users to use a provisioning script for container configuration. It supports NVIDIA CUDA, AMD ROCm, and CPU platforms, with additional environment variables for customization and pre-configured templates for Vast.ai and Runpod.io. The service is password protected by default, with options for version pinning, startup flags, and service management using supervisorctl.

mergekit
Mergekit is a toolkit for merging pre-trained language models. It uses an out-of-core approach to perform unreasonably elaborate merges in resource-constrained situations. Merges can be run entirely on CPU or accelerated with as little as 8 GB of VRAM. Many merging algorithms are supported, with more coming as they catch my attention.

datadreamer
DataDreamer is an advanced toolkit designed to facilitate the development of edge AI models by enabling synthetic data generation, knowledge extraction from pre-trained models, and creation of efficient and potent models. It eliminates the need for extensive datasets by generating synthetic datasets, leverages latent knowledge from pre-trained models, and focuses on creating compact models suitable for integration into any device and performance for specialized tasks. The toolkit offers features like prompt generation, image generation, dataset annotation, and tools for training small-scale neural networks for edge deployment. It provides hardware requirements, usage instructions, available models, and limitations to consider while using the library.

mem-kk-logic
This repository provides a PyTorch implementation of the paper 'On Memorization of Large Language Models in Logical Reasoning'. The work investigates memorization of Large Language Models (LLMs) in reasoning tasks, proposing a memorization metric and a logical reasoning benchmark based on Knights and Knaves puzzles. It shows that LLMs heavily rely on memorization to solve training puzzles but also improve generalization performance through fine-tuning. The repository includes code, data, and tools for evaluation, fine-tuning, probing model internals, and sample classification.

octopus-v4
The Octopus-v4 project aims to build the world's largest graph of language models, integrating specialized models and training Octopus models to connect nodes efficiently. The project focuses on identifying, training, and connecting specialized models. The repository includes scripts for running the Octopus v4 model, methods for managing the graph, training code for specialized models, and inference code. Environment setup instructions are provided for Linux with NVIDIA GPU. The Octopus v4 model helps users find suitable models for tasks and reformats queries for effective processing. The project leverages Language Large Models for various domains and provides benchmark results. Users are encouraged to train and add specialized models following recommended procedures.

paxml
Pax is a framework to configure and run machine learning experiments on top of Jax.
For similar tasks

airbase
Airbase is a Maven project management tool that provides a parent pom structure and conventions for defining new projects. It includes guidelines for project pom structure, deployment to Maven Central, project build and checkers, well-known dependencies, and other properties. Airbase helps in enforcing build configurations, organizing project pom files, and running various checkers to catch problems early in the build process. It also offers default properties that can be overridden in the project pom.

xlings
Xlings is a developer tool for programming learning, development, and course building. It provides features such as software installation, one-click environment setup, project dependency management, and cross-platform language package management. Additionally, it offers real-time compilation and running, AI code suggestions, tutorial project creation, automatic code checking for practice, and demo examples collection.
For similar jobs

slack-bot
The Slack Bot is a tool designed to enhance the workflow of development teams by integrating with Jenkins, GitHub, GitLab, and Jira. It allows for custom commands, macros, crons, and project-specific commands to be implemented easily. Users can interact with the bot through Slack messages, execute commands, and monitor job progress. The bot supports features like starting and monitoring Jenkins jobs, tracking pull requests, querying Jira information, creating buttons for interactions, generating images with DALL-E, playing quiz games, checking weather, defining custom commands, and more. Configuration is managed via YAML files, allowing users to set up credentials for external services, define custom commands, schedule cron jobs, and configure VCS systems like Bitbucket for automated branch lookup in Jenkins triggers.

nx
Nx is a build system optimized for monorepos, featuring AI-powered architectural awareness and advanced CI capabilities. It provides faster task scheduling, caching, and more for existing workspaces. Nx Cloud enhances CI by offering remote caching, task distribution, automated e2e test splitting, and task flakiness detection. The tool aims to scale monorepos efficiently and improve developer productivity.

airbase
Airbase is a Maven project management tool that provides a parent pom structure and conventions for defining new projects. It includes guidelines for project pom structure, deployment to Maven Central, project build and checkers, well-known dependencies, and other properties. Airbase helps in enforcing build configurations, organizing project pom files, and running various checkers to catch problems early in the build process. It also offers default properties that can be overridden in the project pom.

kaito
Kaito is an operator that automates the AI/ML inference model deployment in a Kubernetes cluster. It manages large model files using container images, avoids tuning deployment parameters to fit GPU hardware by providing preset configurations, auto-provisions GPU nodes based on model requirements, and hosts large model images in the public Microsoft Container Registry (MCR) if the license allows. Using Kaito, the workflow of onboarding large AI inference models in Kubernetes is largely simplified.

ai-on-gke
This repository contains assets related to AI/ML workloads on Google Kubernetes Engine (GKE). Run optimized AI/ML workloads with Google Kubernetes Engine (GKE) platform orchestration capabilities. A robust AI/ML platform considers the following layers: Infrastructure orchestration that support GPUs and TPUs for training and serving workloads at scale Flexible integration with distributed computing and data processing frameworks Support for multiple teams on the same infrastructure to maximize utilization of resources

tidb
TiDB is an open-source distributed SQL database that supports Hybrid Transactional and Analytical Processing (HTAP) workloads. It is MySQL compatible and features horizontal scalability, strong consistency, and high availability.

nvidia_gpu_exporter
Nvidia GPU exporter for prometheus, using `nvidia-smi` binary to gather metrics.

tracecat
Tracecat is an open-source automation platform for security teams. It's designed to be simple but powerful, with a focus on AI features and a practitioner-obsessed UI/UX. Tracecat can be used to automate a variety of tasks, including phishing email investigation, evidence collection, and remediation plan generation.