{"id":16779586,"url":"https://github.com/mikolak-net/java8-quickstart-archetype","last_synced_at":"2025-04-10T20:52:33.793Z","repository":{"id":18626773,"uuid":"21832745","full_name":"mikolak-net/java8-quickstart-archetype","owner":"mikolak-net","description":"Very basic Java 8 archetype.","archived":false,"fork":false,"pushed_at":"2018-03-22T20:43:48.000Z","size":33,"stargazers_count":21,"open_issues_count":1,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-24T18:21:28.863Z","etag":null,"topics":["java-8","maven-archetype"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mikolak-net.png","metadata":{"files":{"readme":"README.asciidoc","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-07-14T19:35:31.000Z","updated_at":"2022-04-01T11:35:55.000Z","dependencies_parsed_at":"2022-09-11T17:02:02.474Z","dependency_job_id":null,"html_url":"https://github.com/mikolak-net/java8-quickstart-archetype","commit_stats":null,"previous_names":["mikkoz/java8-quickstart-archetype"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikolak-net%2Fjava8-quickstart-archetype","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikolak-net%2Fjava8-quickstart-archetype/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikolak-net%2Fjava8-quickstart-archetype/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikolak-net%2Fjava8-quickstart-archetype/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mikolak-net","download_url":"https://codeload.github.com/mikolak-net/java8-quickstart-archetype/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248297011,"owners_count":21080309,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java-8","maven-archetype"],"created_at":"2024-10-13T07:30:43.088Z","updated_at":"2025-04-10T20:52:33.768Z","avatar_url":"https://github.com/mikolak-net.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# java8-quickstart-archetype\n:experimental:\n:groupId: pl.org.miki\n:artifactId: java8-quickstart-archetype\n:version: 1.0.0\n:noteOption: (see \u003c\u003c_options,Options\u003e\u003e for more info)\n:artifactSearchName: java8\n//due to lack of includes (see https://github.com/github/markup/issues/335), have to make-do with the following\n:optionLinesBatch1: -DcompilerMode=[simple, test-only, retrolambda-main, retrolambda-all] \\ #optional\n:optionLinesBatch2: -DtestLibrary=[junit, testng, none] #optional\n:optionLinesBatch3:\n:optionLineInteractive: compilerMode, testLibrary\n:toc: right\n\nimage:https://travis-ci.org/mikolak-net/java8-quickstart-archetype.svg?branch=master[\"Build Status\", link=\"https://travis-ci.org/mikolak-net/java8-quickstart-archetype\"]\n\n## Introduction\n\nA bloody simple Java 8 archetype. Has the following features:\n\n * minimizes the amount of \"example\" files that you would have to delete anyway (cf. `maven-quickstart-archetype`).\n * automatically creates *empty* package directories for `main` and `test`.\n * lets you setup many Java 8 configuration variants for all your legacy needs {noteOption}.\n * optionally includes JUnit or TestNG dependencies (JUnit by default).\n \nIn general, this archetype is primarily useful for quickly creating cruft-free projects for Java 8 development.\n\n## Options\n\n* `compilerMode`: [`simple`, `test-only`, `retrolambda-main`, `retrolambda-all`]. DEFAULT: `simple`.\n** `simple`: everything is compiled as Java 8.\n** `test-only`: set up test for Java 8, and main for Java 7.\n** `retrolambda-main`: main code is compiled as Java 8, and then converted to Java 7 via https://github.com/orfjackal/retrolambda[retrolambda].\n** `retrolambda-all`: all code is compiled as Java 8, and then converted to Java 7 via https://github.com/orfjackal/retrolambda[retrolambda].\n* `testLibrary`: [`junit`, `testng`, `none`]. DEFAULT: `junit`. Adds the requested test library to the POM deps.\n\nNOTE: https://github.com/orfjackal/retrolambda#maven-plugin[Retrolambda] support provided \"as is\" - if you have any problems, please file a ticket on the GitHub page!\n\n## Usage\n\nAnalogous to `maven-quickstart-archetype`. Since the archetype is now on Maven Central, you don't need to download anything.\n\n### CLI\n\n#### Batch\n\n[source,bash,subs=\"attributes\"]\n----\nmvn archetype:generate -B \\\n -DarchetypeGroupId={groupId} -DarchetypeArtifactId={artifactId} -DarchetypeVersion={version} \\\n -DgroupId=com.example -DartifactId=project -Dversion=1.0 -Dpackage=com.example.project \\\n {optionLinesBatch1}\n {optionLinesBatch2}\n {optionLinesBatch3}\n----\n\n#### Interactive\n\n[source,bash,subs=\"attributes\"]\n----\ncd x #where x is your \"workspace\" directory\nmvn archetype:generate\n#filter by e.g. \"{artifactSearchName}\", or gId:aId, which is {groupId}:{artifactId}\n#input artifactId etc. \n----\n\n### IDE\n\n#### Eclipse\n\n. menu:New ...[Project... \u003e Maven \u003e Maven Project \u003e Next].\n. Filter for +{artifactId}+. btn:[Next].\n. Fill out the necessary values {noteOption}. btn:[Finish]\n\n#### IntelliJ IDEA\n[subs=\"attributes\"]\n\n. menu:Create New Project[Maven].\n. Check `Create from archetype`.\n. *_On first generation only:_* btn:[Add Archetype...]\n.. `GroupID` = +{groupId}+\n.. `ArtifactId` = +{artifactId}+\n.. `Version` = +{version}+\n. Select the +{artifactId}+ archetype from the list. btn:[Next].\n. Enter the Maven coordinates of _your_ project. btn:[Next].\n. Add +{optionLineInteractive}+ to the options {noteOption}.\n. Fill out remaining details and btn:[Finish].\n\n## Why yet another archetype?\n\nAn excellent question! First of all, archetypes are sometimes quite underrated as a concept - \nthey provide a gateway to various technologies and frameworks to coders who are not Maven, er, \nhttps://en.wikipedia.org/wiki/Maven[mavens].\n\nGiven that, let's take a look at some \"generic\" archetypes such as `net.alchim31.maven:scala-archetype-simple` \nor `org.apache.maven.archetypes:maven-archetype-quickstart`. After project creation, \nit becomes apparent that they serve mainly the following purposes:\n\n* creating the POM boilerplate for the specific project type,\n* introducing the POM creator to some associated frameworks, technologies and/or patterns (e.g. the Scala archetype includes no less than _three_ different test libraries at the same time).\n\nAt this point, coupled with the premise that POMs are essentially executable (declarative) build configuration code, \nit can be argued that the aforementioned archetypes fail the \nhttps://en.wikipedia.org/wiki/Single_responsibility_principle[SRP].\n\nThe archetype you're now viewing, and its sister project,\n attempt to alleviate this problem.\n\nNamely, they have a single goal in mind: enable a user to create multiple projects, \nwith the most popular _exclusive_ configuration _variants_, and with the _least_ \"educto-boilerplate\" to clean up.\n\nThe last subpoint emphasizes why this goal was chosen as a primary one, over educating newcomers. \n\nNowadays, various 3rd party ecosystem libs (such as the aforementioned http://junit.org/[three] \nhttp://www.scalatest.org/[testing] https://etorreborre.github.io/specs2/[libraries] ) \ntend to do a decent job at introducing new developers. Therefore, it is posited that it's more efficient for \nan archetype to just focus on providing a _tabula rasa_.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmikolak-net%2Fjava8-quickstart-archetype","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmikolak-net%2Fjava8-quickstart-archetype","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmikolak-net%2Fjava8-quickstart-archetype/lists"}