Apache Maven artifacts for bootstrapping new open-source projects

Overview

OSS Quickstart

Apache Maven archetypes for bootstrapping new open-source projects.

Think Maven Quickstart Archetype and friends, but more modern, complete, and opinionated.

Latest version: 1.0.0.Alpha1

Features

The archetypes aim add providing commonly used functionality, while defining sensible defaults, following modern conventions and best practices:

  • Up-to-date (and fixed) dependency and plug-in versions
  • Provide a license
  • Basic set-up for CI
  • House-keeping and quality assurance plug-ins, e.g. for formatting and license header checking
  • (Optionally) provide a module-info.java descriptor

Usage

Run the following command to create a new project based on the oss-quickstart-simple-archetype archetype:

mvn archetype:generate \
  -DarchetypeGroupId=org.moditect.ossquickstart \
  -DarchetypeArtifactId=oss-quickstart-simple-archetype \
  -DarchetypeVersion=1.0.0.Alpha1

Then provide values for the parameters prompted for, such as group and artifact id of the project to be generated.

Alternatively, use the non-interactive ("batch") mode and provide all the values like so:

mvn archetype:generate -B \
  -DarchetypeGroupId=org.moditect.ossquickstart \
  -DarchetypeArtifactId=oss-quickstart-simple-archetype \
  -DarchetypeVersion=1.0.0.Alpha1 \
  -DgroupId=com.example.demos \
  -DartifactId=fancy-project \
  -Dversion=1.0.0-SNAPSHOT \
  -DmoduleName=com.example.fancy

Use the special value NONE for moduleName if you don't want generate a module-info.java file.

Components

  • oss-quickstart-simple-archetype: A Maven archetype for creating a single module project following best practices
  • oss-quickstart-simple-template: A template for the single module archetype

Building this Project

Run the following command to install the archetypes defined by this project into your local Maven repostory:

mvn clean install

Updating the Archetypes

Do the required changes to the template projects (currently oss-quickstart-simple-template only), then update the archetype by running this command:

./update-from-templates.sh

When adding or removing any resources, also copy the generated archetype descriptor:

cp oss-quickstart-simple-template/target/generated-sources/archetype/src/main/resources/META-INF/maven/archetype-metadata.xml \ 
  oss-quickstart-simple-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml

Attention: the archetype descriptor contains additional, manually applied changes, it must not be simply overwritten with the generated one.

Examine the changes to the archetype module and commit the changes.

License

This code base is available under the Apache License, version 2.

Comments
  • Release fails with Java 17

    Release fails with Java 17

    See the execution of the release job, ran into this one: https://issues.sonatype.org/browse/OSSRH-66257.

    @aalmiray, I believe we've had this before. Did we do that XStream dependency version override to prevent it?

    opened by gunnarmorling 4
  • Allow running script on Linux

    Allow running script on Linux

    On linux, gsed is typically not a command, but GNU sed is available as sed. This change should allow using it on both Mac and Linux without issues, assuming gsed is installed on the Mac.

    opened by fwilhe2 1
  • 👷 Add release configuration and workflows

    👷 Add release configuration and workflows

    Added basic configuration for releasing with JReleaser. Added a trigger GH workflow.

    Local releases can be reviewed with

    $ mvn -pl :ossquickstart-aggregator -Pjreleaser jreleaser:config
    
    opened by aalmiray 1
  • Add

    Add "quick" profile

    Allow to skip all non-essential plug-ins (only keep compilation and packaging) to produce an artifact as quickly as possible. This will require plug-ins like Checkstyle to be moved into a separate profile, so that they are not loaded at all when not enabling that profile (unlike when relying on their skip options). See Peter Palaga's "Skipping Maven Plug-ins the Right Way" presentation.

    template 
    opened by gunnarmorling 1
  • Suggestion: Create runnable jar by default

    Suggestion: Create runnable jar by default

    I like this archetype :+1:

    I guess this might be a bit controversial, not sure if this is inside the scope of this archetype, but I'd propose to add a main method and set it so we get a jar that can be run with java -jar target/app.jar.

    Honestly that is something where I always need to look up how to do it again, so it would be really nice if it was an (optional?) feature of this archetype.

    opened by fwilhe2 3
  • Provide option to create JReleaser configuration

    Provide option to create JReleaser configuration

    I'm not sure whether we always should create that by default, but it may be an opt-in feature which can be chosen when creating a project from the archetype. WDYT, @aalmiray?

    opened by gunnarmorling 4
Releases(v1.0.0.Alpha1)
  • v1.0.0.Alpha1(Nov 30, 2021)

    Changelog

    Added

    • 5943f12 👷 #6 Add release configuration and workflows
    • 8ae9624 ✨ #11 Adding module-info.java
    • d1e1536 ✨ Adding .gitignore
    • 0ab157b 👷‍♂️#4 Adding GitHub Actions flow to template
    • 39743e3 👷‍♂️Adding CI
    • 15946e9 ✨ Creating archetype
    • c536458 ✨ #3 Adding "quick" profile

    Changed

    • b610a0f 🚚 Streamlining artifact ids
    • 077882d 💄 Activate gitmoji preset
    • 50b8c46 ⚡️ Refactor post-generation Groovy script
    • 2c06c61 ♻️ Moving Surefire config to plugin management
    • d393e0e 🏗️ Adding parent POM
    • e184ef2 ♻️ Misc. clean-up
    • 2d181fb 💄 'bootstrap' -> 'quickstart'

    Deprecated

    • 29d4d0c 🗑️ Removing superfluous files

    Dependencies

    • c600ffe ⬇️ Using Java 11 for building

    Documentation

    • 5fcf3bb 📝 #11 README update
    • cbf2212 📝 README update
    • d64768c 📝 README update

    • c70f1e2 Releasing version 1.0.0.Alpha1
    • e433ab3 🏆 Initial import

    Contributors

    We'd like to thank the following people for their contributions:

    Source code(tar.gz)
    Source code(zip)
Owner
ModiTect
A family of open-source projects related to Java Modules, Flight Recorder, and more
ModiTect
Java related projects and also a begginer level projects

Java related projects and also a begginer level projects

Akshit Sijwali 3 Dec 15, 2022
100+ Spring Boot Articles, Tutorials, Video tutorials, Projects, Guides, Source code examples etc

YouTube Channel - Spring Boot Tutorial Subscribe for future video and updates Spring Boot Tutorial on YouTube Newly published spring boot tutorials (2

Ramesh Fadatare 1.2k Jan 2, 2023
Spring-boot project using open-api, docker, maven, REST

library-service spring-boot project using open-api, docker, maven, REST I used docker to run the project, as well as open-api to generate basic GET an

Sandy Huang 2 Nov 27, 2022
Source codes of book Java Concurrency In Practice, rebuild by maven.

Introduction Source codes of book: Java Concurrency In Practice(2011, Brain Goetz etc. jcip for short.), rebuild from https://jcip.net/ with maven. Mo

Sam Sune 2 Jun 9, 2022
A boilerplate project designed to work as a template for new microservices and help you get in touch with various useful concepts.

Microservice Reference Project This project is inspired by the idea to quickly create a production ready project with all the required infrastructure

Innovation & Tech 4 Dec 17, 2022
Very briefly capturing some of new/ update in API that were introduced after Java 8 that may come handy for dev folks while programming

Very briefly capturing some of new/ update in API that were introduced after Java 8 that may come handy for dev folks while programming. Also have created tests demonstrating those APIs and playaround with it.

Jayaramanan Kumar 3 Jan 24, 2022
A template repository for new extensions.

SAP CX Template The sapcxtemplate extension improves ... FEATURE DESCRIPTION COPY-TEXT INTRODUCTION How to activate and use COPY-TEXT ACTIVATION / SET

SAP CX Tools 3 Dec 15, 2022
Helps creating new architecture files for react native.

Work In Progress Create React Native New Arch Files This script helps creating newly added new architecture files for react native. How to run the scr

Ahmet Biçer 8 Oct 17, 2022
A new rank core that will be cool SoonTM

Alchemist A new rank core that will be cool SoonTM Made by 98ping, utilized projects from devrawr and aikiar Updates We have new updates and features

Max 11 Jan 2, 2023
EssentialClient is a client side mod originally forked from Carpet Client for 1.15.2 that implements new client side features

EssentialClient EssentialClient is a client side only mod originally forked from Carpet Client for 1.15.2 that implements new client side features. Th

null 62 Jan 3, 2023
@FengG0d 's Client, but he leave, I am the new owner, but, I don't know how to write Java, I need your help.

IKUN Client Help me I need help! The original Author was leave, but I don't know how to write a good client, I need Your help! to make a good IKun Cli

Chenken520 2 Sep 4, 2022
Tuya 37 Dec 26, 2022
All the Android-Java Projects in Single Repository

Android Java Projects List of Projects Factorial Calculator Multiplication Table Web App Steps to Run the Applications Clone this Repository Create a

Rajan Gautam 2 Oct 10, 2022
Template to speed up your development in React Native projects.

React Native SpaceShip I created this template with the purpose of leaving the development environment already configured for use. ?? How to use it in

Lucas Augusto 3 Mar 23, 2022
Tech Elevator Bootcamp Exercises and Projects

TechElevatorExercises A folder for all my Tech Elevator endeavors as I learn full-stack development bootcamp-style.

Kai Indigo Wolf 1 Jul 24, 2022
Generates a Proguard mapping file for use in obfuscating your Java projects.

Reaper Generates a Proguard mapping file for use in obfuscating your Java projects. Features Automatically checks for duplicate names. Interactive, in

Nox 12 Dec 29, 2022
Exploring Spring and Sprinboot by building projects

Explore-Spring-Springboot Exploring Spring and Sprinboot by building projects Requirements Java-JDK: 17 IDE supporting Maven Integration: Intellij IDE

Deepraj 4 Sep 19, 2022
Just-In-Time Access is an AppEngine application that lets you manage just-in-time privileged access to Google Cloud projects.

Just-In-Time Access Just-In-Time Access is an AppEngine application that lets you manage just-in-time privileged access to Google Cloud projects. Syno

Google Cloud Platform 36 Jan 3, 2023
Three Java projects assigned for the Introduction to Object-Oriented Programming (CMPE 160) course in the Spring 2021 semester.

CMPE160-projects Three Java projects assigned for the Introduction to Object-Oriented Programming (CMPE 160) course in the Spring 2021 semester. These

Aras Güngöre 21 Dec 6, 2022