Compare commits
198 commits
1.1.0-beta
...
master
Author | SHA1 | Date | |
---|---|---|---|
78a35dea31 | |||
03c749de68 | |||
5fa475a726 | |||
a2f08edcbe | |||
7028182522 | |||
5c2373ff8b | |||
2a7cacc945 | |||
2770d4a75e | |||
8ecb70758b | |||
90e584c0f1 | |||
c904f4a7a2 | |||
a82c416af5 | |||
4596e71a55 | |||
ed7a6ff9da | |||
fc785581ba | |||
8274798be5 | |||
3a767ddcb2 | |||
4961829fcd | |||
da20cf6fa1 | |||
14d38fa0da | |||
0857cb00a6 | |||
1694e6f665 | |||
028e173274 | |||
f8d708ffc8 | |||
c9d9e4695c | |||
b235ad4240 | |||
5b5bd56077 | |||
050fd5d3a6 | |||
e6316c70a2 | |||
7f2141044f | |||
8ee5ac7867 | |||
9d67f126b0 | |||
3b18ff1612 | |||
94254cd590 | |||
6f738cee9e | |||
bf75fb0faa | |||
c918b9ffa1 | |||
0c10b9aeba | |||
47ffb6e12b | |||
d11420dae3 | |||
6e4307cb61 | |||
02ee7eaf8b | |||
01f543ba8d | |||
1b153851fc | |||
b84ab29602 | |||
f71bc5c8ba | |||
81d415fb8a | |||
d62f8b591c | |||
86c0dff26e | |||
119818193d | |||
fd5746f007 | |||
1f9664cb7f | |||
4a6fa98d46 | |||
65d2eb0c7c | |||
24b047ae1b | |||
1f1ece0956 | |||
dc27cb86e5 | |||
c5a6e2220c | |||
84d3f69215 | |||
8dae1dcbaf | |||
d08cf8d72b | |||
9ddf470e40 | |||
65fb61daf4 | |||
5cf167e7bf | |||
a8d3d7a4ea | |||
878e1033f1 | |||
b18a9f641c | |||
6451d45e7c | |||
35eb6d4a77 | |||
4440fe0373 | |||
d6f25e6b48 | |||
747010a193 | |||
c8aee7158c | |||
11a47e7e0b | |||
0ec7a6ee13 | |||
19e579d4a5 | |||
d8093f7253 | |||
4858c58978 | |||
4e096b3dad | |||
ad17e7edef | |||
01b16c211d | |||
d7d641f207 | |||
2ce19a215f | |||
e01ea7882f | |||
8c5f4a72fa | |||
5a422fe502 | |||
5dce160cf1 | |||
b224e1fc99 | |||
af3de2cc74 | |||
cae74c95b3 | |||
94e42972e0 | |||
06d062ae0c | |||
a755e7d11e | |||
ba0b56f9e2 | |||
79945ad2df | |||
0809e69dfc | |||
00c699972a | |||
817b2e0eeb | |||
462bfe3cc5 | |||
1b706aedc5 | |||
f8101bb2e9 | |||
6d48ec6203 | |||
ee1d28a7b9 | |||
1580bfca98 | |||
14a72542ff | |||
ae44b36283 | |||
961a9535de | |||
5146d46eab | |||
cb07b2e21b | |||
3bd333b603 | |||
0e03c6c1c2 | |||
84054cb398 | |||
fb593a0a1a | |||
0ca574695f | |||
1367ae5ec0 | |||
66a0fec4e3 | |||
63f9ae8a03 | |||
c920adf2c5 | |||
2102691d37 | |||
90df90e543 | |||
4e029507be | |||
8238517b0d | |||
c2f20f5084 | |||
d689ade3a1 | |||
486ed17317 | |||
72a955217e | |||
f801ce03fe | |||
0fb4324d8d | |||
cd10d5325a | |||
06263ee003 | |||
7f838e9863 | |||
b83a17e9c8 | |||
ed35e70af4 | |||
7f172d0b90 | |||
37d33f1ea3 | |||
c0be96dd24 | |||
a9bcd354ed | |||
3c503c7a06 | |||
3cb4b20a3d | |||
bae6497368 | |||
4a1f9e45f5 | |||
f29dddf82c | |||
919661095c | |||
38fd8d6bda | |||
5f431e0725 | |||
eba4b97704 | |||
27c622c7ba | |||
73f3455dc6 | |||
927919b18b | |||
b175ad4f4c | |||
fbdd6661ea | |||
59c28f1b50 | |||
528f9c9a54 | |||
5f13ef37b2 | |||
feb33d7e2d | |||
6455662d23 | |||
909b03e861 | |||
9cc9c66b29 | |||
45e99ea6a7 | |||
9794fab00f | |||
730deed7c0 | |||
4f66ef8024 | |||
f4169e56ed | |||
b733cd89e2 | |||
9e63b00c71 | |||
9f3b488822 | |||
4df1dd3ddd | |||
931d08be63 | |||
7c8e348b27 | |||
b1602c78a9 | |||
d74d2b5fdf | |||
77a1b1cf14 | |||
eb907c33fa | |||
5580ea6687 | |||
f1d712816e | |||
e51dd093d9 | |||
e35276ddc8 | |||
1f8388ca4f | |||
55d2e9e0d7 | |||
45a90d1353 | |||
e8c00828f3 | |||
effae8dd55 | |||
45e1282cec | |||
5adaec419e | |||
3074f1eb67 | |||
6621872edc | |||
be84f36395 | |||
6f2ce396f3 | |||
6fcf7daa1c | |||
f8a8e5917b | |||
6800d362a7 | |||
421f8deff5 | |||
42ce43ad46 | |||
6c3afa54e0 | |||
d60bf6345e | |||
635351c955 | |||
077b6073b4 | |||
887280a5fc |
197 changed files with 5188 additions and 2666 deletions
|
@ -1,75 +1,42 @@
|
|||
defaults: &defaults
|
||||
working_directory: ~/repo
|
||||
docker:
|
||||
- image: circleci/openjdk:8-jdk
|
||||
environment:
|
||||
JVM_OPTS: -Xmx3200m
|
||||
TERM: dumb
|
||||
version: 2.1
|
||||
|
||||
version: 2.0
|
||||
commands:
|
||||
build_and_test:
|
||||
parameters:
|
||||
reports-dir:
|
||||
type: string
|
||||
default: "build/reports/test_results"
|
||||
steps:
|
||||
- checkout
|
||||
- run:
|
||||
name: Download dependencies
|
||||
command: ./bld download
|
||||
- run:
|
||||
name: Compile source
|
||||
command: ./bld compile
|
||||
- run:
|
||||
name: Run tests
|
||||
command: ./bld jacoco -reports-dir=<< parameters.reports-dir >>
|
||||
- store_test_results:
|
||||
path: << parameters.reports-dir >>
|
||||
- store_artifacts:
|
||||
path: build/reports/jacoco/test/html
|
||||
|
||||
jobs:
|
||||
build_gradle:
|
||||
<<: *defaults
|
||||
|
||||
bld_jdk17:
|
||||
docker:
|
||||
- image: cimg/openjdk:17.0
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
keys:
|
||||
- gradle-dependencies-{{ checksum "build.gradle" }}
|
||||
# fallback to using the latest cache if no exact match is found
|
||||
- gradle-dependencies-
|
||||
|
||||
- run:
|
||||
name: Gradle Dependencies
|
||||
command: ./gradlew dependencies
|
||||
|
||||
- save_cache:
|
||||
paths: ~/.m2
|
||||
key: gradle-dependencies-{{ checksum "build.gradle" }}
|
||||
|
||||
- run:
|
||||
name: Run All Checks
|
||||
command: ./gradlew check
|
||||
|
||||
- store_artifacts:
|
||||
path: build/reports/
|
||||
destination: reports
|
||||
- store_test_results:
|
||||
path: build/reports/
|
||||
|
||||
build_kobalt:
|
||||
<<: *defaults
|
||||
- build_and_test
|
||||
|
||||
bld_jdk21:
|
||||
docker:
|
||||
- image: cimg/openjdk:21.0
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
keys:
|
||||
- kobalt-dependencies-{{ checksum "kobalt/src/Build.kt" }}
|
||||
# fallback to using the latest cache if no exact match is found
|
||||
- kobalt-dependencies-
|
||||
|
||||
- run:
|
||||
name: Check Versions
|
||||
command: ./kobaltw checkVersions
|
||||
|
||||
- save_cache:
|
||||
paths: ~/.kobalt
|
||||
key: kobalt-dependencies-{{ checksum "kobalt/src/Build.kt" }}
|
||||
|
||||
- run:
|
||||
name: Assemble & Test
|
||||
command: ./kobaltw assemble test
|
||||
|
||||
- store_artifacts:
|
||||
path: kobaltBuild/test-output/
|
||||
destination: test-output
|
||||
- store_test_results:
|
||||
path: kobaltBuild/test-output/
|
||||
- build_and_test
|
||||
|
||||
workflows:
|
||||
version: 2
|
||||
build_gradle_and_kobalt:
|
||||
bld:
|
||||
jobs:
|
||||
- build_gradle
|
||||
- build_kobalt
|
||||
- bld_jdk17
|
||||
- bld_jdk21
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[*]
|
||||
insert_final_newline=true
|
||||
insert_final_newline = true
|
||||
|
|
76
.github/workflows/bld.yml
vendored
Normal file
76
.github/workflows/bld.yml
vendored
Normal file
|
@ -0,0 +1,76 @@
|
|||
name: bld-ci
|
||||
|
||||
on: [push, pull_request, workflow_dispatch]
|
||||
|
||||
jobs:
|
||||
build-bld-project:
|
||||
env:
|
||||
COVERAGE_JDK: "17"
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
java-version: [17, 21, 24]
|
||||
os: [ ubuntu-latest, windows-latest, macos-latest ]
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
steps:
|
||||
- name: Checkout source repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up JDK ${{ matrix.java-version }}
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: "zulu"
|
||||
java-version: ${{ matrix.java-version }}
|
||||
|
||||
- name: Download dependencies [bld example]
|
||||
working-directory: examples/java/bld
|
||||
run: ./bld download
|
||||
|
||||
- name: Compile and run [bld example]
|
||||
working-directory: examples/java/bld
|
||||
run: |
|
||||
./bld compile
|
||||
./bld run
|
||||
./bld run-example
|
||||
|
||||
- name: Run example [gradle java examples]
|
||||
working-directory: examples/java/gradle
|
||||
run: |
|
||||
./gradlew run
|
||||
./gradlew runExample
|
||||
|
||||
- name: Run example [gradle kotlin examples]
|
||||
working-directory: examples/kotlin
|
||||
run: |
|
||||
./gradlew run
|
||||
./gradlew runExample
|
||||
|
||||
- name: Download dependencies
|
||||
run: ./bld download
|
||||
|
||||
- name: Compile source
|
||||
run: ./bld compile
|
||||
|
||||
- name: Run tests
|
||||
run: ./bld jacoco
|
||||
|
||||
- name: Remove pom.xml
|
||||
if: success() && matrix.java-version == env.COVERAGE_JDK && matrix.os == 'ubuntu-latest'
|
||||
run: rm -rf pom.xml
|
||||
|
||||
- name: SonarCloud Scan
|
||||
uses: sonarsource/sonarcloud-github-action@master
|
||||
if: success() && matrix.java-version == env.COVERAGE_JDK && matrix.os == 'ubuntu-latest'
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
||||
|
||||
- name: Upload coverage reports to Codecov
|
||||
uses: codecov/codecov-action@v3
|
||||
if: success() && matrix.java-version == env.COVERAGE_JDK && matrix.os == 'ubuntu-latest'
|
||||
env:
|
||||
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
1
.github_changelog_generator
Normal file
1
.github_changelog_generator
Normal file
|
@ -0,0 +1 @@
|
|||
future-release=1.2.1
|
104
.gitignore
vendored
104
.gitignore
vendored
|
@ -1,48 +1,58 @@
|
|||
!.vscode/extensions.json
|
||||
!.vscode/launch.json
|
||||
!.vscode/settings.json
|
||||
!.vscode/tasks.json
|
||||
.classpath
|
||||
.DS_Store
|
||||
.gradle
|
||||
.kobalt
|
||||
.nb-gradle
|
||||
.project
|
||||
.settings
|
||||
.vscode/*
|
||||
*.code-workspace
|
||||
*.iws
|
||||
*.sublime-*
|
||||
**/.idea/**/dataSources.ids
|
||||
**/.idea/**/dataSources.local.xml
|
||||
**/.idea/**/dataSources/
|
||||
**/.idea/**/dbnavigator.xml
|
||||
**/.idea/**/dictionaries
|
||||
**/.idea/**/dynamic.xml
|
||||
**/.idea/**/gradle.xml
|
||||
**/.idea/**/libraries
|
||||
**/.idea/**/shelf
|
||||
**/.idea/**/sqlDataSources.xml
|
||||
**/.idea/**/tasks.xml
|
||||
**/.idea/**/uiDesigner.xml
|
||||
**/.idea/**/usage.statistics.xml
|
||||
**/.idea/**/workspace.xml
|
||||
**/*.class
|
||||
/bin
|
||||
/build
|
||||
/deploy
|
||||
/dist
|
||||
/gen
|
||||
/gradle.properties
|
||||
/lib/kotlin*
|
||||
/libs
|
||||
/local.properties
|
||||
/out
|
||||
/proguard-project.txt
|
||||
/project.properties
|
||||
/target
|
||||
/test-output
|
||||
ehthumbs.db
|
||||
kobaltBuild
|
||||
kobaltw*-test
|
||||
Thumbs.db
|
||||
.DS_Store
|
||||
build
|
||||
lib/bld/**
|
||||
!lib/bld/bld-wrapper.properties
|
||||
!lib/bld/bld-wrapper.jar
|
||||
lib/compile/
|
||||
lib/runtime/
|
||||
lib/standalone/
|
||||
lib/test/
|
||||
|
||||
# IDEA ignores
|
||||
|
||||
# User-specific
|
||||
.idea/**/workspace.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/**/usage.statistics.xml
|
||||
.idea/**/dictionaries
|
||||
.idea/**/shelf
|
||||
|
||||
# AWS User-specific
|
||||
.idea/**/aws.xml
|
||||
|
||||
# Generated files
|
||||
.idea/**/contentModel.xml
|
||||
|
||||
# Sensitive or high-churn files
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
.idea/**/dbnavigator.xml
|
||||
|
||||
# Gradle
|
||||
.idea/**/gradle.xml
|
||||
|
||||
# Mongo Explorer plugin
|
||||
.idea/**/mongoSettings.xml
|
||||
|
||||
# mpeltonen/sbt-idea plugin
|
||||
.idea_modules/
|
||||
|
||||
# JIRA plugin
|
||||
atlassian-ide-plugin.xml
|
||||
|
||||
# Cursive Clojure plugin
|
||||
.idea/replstate.xml
|
||||
|
||||
# SonarLint plugin
|
||||
.idea/sonarlint/
|
||||
|
||||
# Editor-based Rest Client
|
||||
.idea/httpRequests
|
||||
|
||||
local.properties
|
||||
target
|
||||
|
|
28
.idea/app.iml
generated
Normal file
28
.idea/app.iml
generated
Normal file
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<output url="file://$MODULE_DIR$/build/main" />
|
||||
<output-test url="file://$MODULE_DIR$/build/test" />
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" relativeOutputPath="resources" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module-library" scope="RUNTIME">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="file://$MODULE_DIR$/src/main/resources/templates" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="library" name="compile" level="project" />
|
||||
<orderEntry type="library" scope="RUNTIME" name="runtime" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="test" level="project" />
|
||||
</component>
|
||||
</module>
|
14
.idea/bld.iml
generated
Normal file
14
.idea/bld.iml
generated
Normal file
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<output url="file://$MODULE_DIR$/build/bld" />
|
||||
<output-test url="file://$MODULE_DIR$/build/bld" />
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$/src/bld">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/bld/java" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="bld" level="project" />
|
||||
</component>
|
||||
</module>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding">
|
||||
<file url="PROJECT" charset="UTF-8" />
|
||||
<component name="BldConfiguration">
|
||||
<events />
|
||||
</component>
|
||||
</project>
|
5
.idea/codeStyles/codeStyleConfig.xml
generated
5
.idea/codeStyles/codeStyleConfig.xml
generated
|
@ -1,5 +0,0 @@
|
|||
<component name="ProjectCodeStyleConfiguration">
|
||||
<state>
|
||||
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Erik's Code Style" />
|
||||
</state>
|
||||
</component>
|
10
.idea/compiler.xml
generated
10
.idea/compiler.xml
generated
|
@ -1,10 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<bytecodeTargetLevel>
|
||||
<module name="example_annotationProcessor" target="1.8" />
|
||||
<module name="example_main" target="1.8" />
|
||||
<module name="example_test" target="1.8" />
|
||||
</bytecodeTargetLevel>
|
||||
</component>
|
||||
</project>
|
6
.idea/copyright/BSD_3_Clause.xml
generated
Normal file
6
.idea/copyright/BSD_3_Clause.xml
generated
Normal file
|
@ -0,0 +1,6 @@
|
|||
<component name="CopyrightManager">
|
||||
<copyright>
|
||||
<option name="notice" value="&#36;file.fileName Copyright (c) 2016-&#36;today.year, Erik C. Thauvin (erik@thauvin.net) All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of this project nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." />
|
||||
<option name="myName" value="BSD-3 Clause" />
|
||||
</copyright>
|
||||
</component>
|
3
.idea/copyright/profiles_settings.xml
generated
Normal file
3
.idea/copyright/profiles_settings.xml
generated
Normal file
|
@ -0,0 +1,3 @@
|
|||
<component name="CopyrightManager">
|
||||
<settings default="BSD-3 Clause" />
|
||||
</component>
|
49
.idea/inspectionProfiles/Project_Default.xml
generated
49
.idea/inspectionProfiles/Project_Default.xml
generated
|
@ -1,53 +1,8 @@
|
|||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0">
|
||||
<option name="myName" value="Project Default" />
|
||||
<option name="myLocal" value="true" />
|
||||
<inspection_tool class="FieldMayBeFinal" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="JavaDoc" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="TOP_LEVEL_CLASS_OPTIONS">
|
||||
<value>
|
||||
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
|
||||
<option name="REQUIRED_TAGS" value="" />
|
||||
</value>
|
||||
</option>
|
||||
<option name="INNER_CLASS_OPTIONS">
|
||||
<value>
|
||||
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
|
||||
<option name="REQUIRED_TAGS" value="" />
|
||||
</value>
|
||||
</option>
|
||||
<option name="METHOD_OPTIONS">
|
||||
<value>
|
||||
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
|
||||
<option name="REQUIRED_TAGS" value="@return@param@throws or @exception" />
|
||||
</value>
|
||||
</option>
|
||||
<option name="FIELD_OPTIONS">
|
||||
<value>
|
||||
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
|
||||
<option name="REQUIRED_TAGS" value="" />
|
||||
</value>
|
||||
</option>
|
||||
<option name="IGNORE_DEPRECATED" value="false" />
|
||||
<option name="IGNORE_JAVADOC_PERIOD" value="true" />
|
||||
<option name="IGNORE_DUPLICATED_THROWS" value="false" />
|
||||
<option name="IGNORE_POINT_TO_ITSELF" value="false" />
|
||||
<option name="myAdditionalJavadocTags" value="created" />
|
||||
</inspection_tool>
|
||||
<inspection_tool class="LocalCanBeFinal" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="REPORT_VARIABLES" value="true" />
|
||||
<option name="REPORT_PARAMETERS" value="false" />
|
||||
<option name="REPORT_CATCH_PARAMETERS" value="false" />
|
||||
</inspection_tool>
|
||||
<inspection_tool class="LoggerInitializedWithForeignClass" enabled="false" level="WARNING" enabled_by_default="false">
|
||||
<option name="loggerClassName" value="org.apache.log4j.Logger,org.slf4j.LoggerFactory,org.apache.commons.logging.LogFactory,java.util.logging.Logger" />
|
||||
<option name="loggerFactoryMethodName" value="getLogger,getLogger,getLog,getLogger" />
|
||||
</inspection_tool>
|
||||
<inspection_tool class="UnnecessarySemicolon" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||
<inspection_tool class="WeakerAccess" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS" value="true" />
|
||||
<option name="SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES" value="false" />
|
||||
<option name="SUGGEST_PRIVATE_FOR_INNERS" value="false" />
|
||||
<inspection_tool class="JavadocDeclaration" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="ADDITIONAL_TAGS" value="created" />
|
||||
</inspection_tool>
|
||||
</profile>
|
||||
</component>
|
204
.idea/intellij-javadocs-4.0.1.xml
generated
Normal file
204
.idea/intellij-javadocs-4.0.1.xml
generated
Normal file
|
@ -0,0 +1,204 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="JavaDocConfiguration">
|
||||
<GENERAL>
|
||||
<MODE>UPDATE</MODE>
|
||||
<OVERRIDDEN_METHODS>false</OVERRIDDEN_METHODS>
|
||||
<SPLITTED_CLASS_NAME>true</SPLITTED_CLASS_NAME>
|
||||
<LEVELS>
|
||||
<LEVEL>FIELD</LEVEL>
|
||||
<LEVEL>TYPE</LEVEL>
|
||||
<LEVEL>METHOD</LEVEL>
|
||||
</LEVELS>
|
||||
<VISIBILITIES>
|
||||
<VISIBILITY>DEFAULT</VISIBILITY>
|
||||
<VISIBILITY>PUBLIC</VISIBILITY>
|
||||
<VISIBILITY>PROTECTED</VISIBILITY>
|
||||
</VISIBILITIES>
|
||||
</GENERAL>
|
||||
<TEMPLATES>
|
||||
<CLASSES>
|
||||
<CLASS>
|
||||
<KEY>^.*(public|protected|private)*.+interface\s+\w+.*</KEY>
|
||||
<VALUE>/**\n
|
||||
* The interface ${name}.\n
|
||||
<#if element.typeParameters?has_content> * \n
|
||||
</#if>
|
||||
<#list element.typeParameters as typeParameter>
|
||||
* @param <${typeParameter.name}> the type parameter\n
|
||||
</#list>
|
||||
*/</VALUE>
|
||||
</CLASS>
|
||||
<CLASS>
|
||||
<KEY>^.*(public|protected|private)*.+enum\s+\w+.*</KEY>
|
||||
<VALUE>/**\n
|
||||
* The enum ${name}.\n
|
||||
*/</VALUE>
|
||||
</CLASS>
|
||||
<CLASS>
|
||||
<KEY>^.*(public|protected|private)*.+class\s+\w+.*</KEY>
|
||||
<VALUE>/**\n
|
||||
* The type ${name}.\n
|
||||
<#if element.typeParameters?has_content> * \n
|
||||
</#if>
|
||||
<#list element.typeParameters as typeParameter>
|
||||
* @param <${typeParameter.name}> the type parameter\n
|
||||
</#list>
|
||||
*/</VALUE>
|
||||
</CLASS>
|
||||
<CLASS>
|
||||
<KEY>.+</KEY>
|
||||
<VALUE>/**\n
|
||||
* The type ${name}.\n
|
||||
*/</VALUE>
|
||||
</CLASS>
|
||||
</CLASSES>
|
||||
<CONSTRUCTORS>
|
||||
<CONSTRUCTOR>
|
||||
<KEY>.+</KEY>
|
||||
<VALUE>/**\n
|
||||
* Instantiates a new ${name}.\n
|
||||
<#if element.parameterList.parameters?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.parameterList.parameters as parameter>
|
||||
* @param ${parameter.name} the ${paramNames[parameter.name]}\n
|
||||
</#list>
|
||||
<#if element.throwsList.referenceElements?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.throwsList.referenceElements as exception>
|
||||
* @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n
|
||||
</#list>
|
||||
*/</VALUE>
|
||||
</CONSTRUCTOR>
|
||||
</CONSTRUCTORS>
|
||||
<METHODS>
|
||||
<METHOD>
|
||||
<KEY>^.*(public|protected|private)*\s*.*(\w(\s*<.+>)*)+\s+get\w+\s*\(.*\).+</KEY>
|
||||
<VALUE>/**\n
|
||||
* Gets ${partName}.\n
|
||||
<#if element.typeParameters?has_content> * \n
|
||||
</#if>
|
||||
<#list element.typeParameters as typeParameter>
|
||||
* @param <${typeParameter.name}> the type parameter\n
|
||||
</#list>
|
||||
<#if element.parameterList.parameters?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.parameterList.parameters as parameter>
|
||||
* @param ${parameter.name} the ${paramNames[parameter.name]}\n
|
||||
</#list>
|
||||
<#if isNotVoid>
|
||||
*\n
|
||||
* @return the ${partName}\n
|
||||
</#if>
|
||||
<#if element.throwsList.referenceElements?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.throwsList.referenceElements as exception>
|
||||
* @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n
|
||||
</#list>
|
||||
*/</VALUE>
|
||||
</METHOD>
|
||||
<METHOD>
|
||||
<KEY>^.*(public|protected|private)*\s*.*(void|\w(\s*<.+>)*)+\s+set\w+\s*\(.*\).+</KEY>
|
||||
<VALUE>/**\n
|
||||
* Sets ${partName}.\n
|
||||
<#if element.typeParameters?has_content> * \n
|
||||
</#if>
|
||||
<#list element.typeParameters as typeParameter>
|
||||
* @param <${typeParameter.name}> the type parameter\n
|
||||
</#list>
|
||||
<#if element.parameterList.parameters?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.parameterList.parameters as parameter>
|
||||
* @param ${parameter.name} the ${paramNames[parameter.name]}\n
|
||||
</#list>
|
||||
<#if isNotVoid>
|
||||
*\n
|
||||
* @return the ${partName}\n
|
||||
</#if>
|
||||
<#if element.throwsList.referenceElements?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.throwsList.referenceElements as exception>
|
||||
* @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n
|
||||
</#list>
|
||||
*/</VALUE>
|
||||
</METHOD>
|
||||
<METHOD>
|
||||
<KEY>^.*((public\s+static)|(static\s+public))\s+void\s+main\s*\(\s*String\s*(\[\s*\]|\.\.\.)\s+\w+\s*\).+</KEY>
|
||||
<VALUE>/**\n
|
||||
* The entry point of application.\n
|
||||
|
||||
<#if element.parameterList.parameters?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
* @param ${element.parameterList.parameters[0].name} the input arguments\n
|
||||
<#if element.throwsList.referenceElements?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.throwsList.referenceElements as exception>
|
||||
* @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n
|
||||
</#list>
|
||||
*/</VALUE>
|
||||
</METHOD>
|
||||
<METHOD>
|
||||
<KEY>.+</KEY>
|
||||
<VALUE>/**\n
|
||||
* ${name}<#if isNotVoid> ${return}</#if>.\n
|
||||
<#if element.typeParameters?has_content> * \n
|
||||
</#if>
|
||||
<#list element.typeParameters as typeParameter>
|
||||
* @param <${typeParameter.name}> the type parameter\n
|
||||
</#list>
|
||||
<#if element.parameterList.parameters?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.parameterList.parameters as parameter>
|
||||
* @param ${parameter.name} the ${paramNames[parameter.name]}\n
|
||||
</#list>
|
||||
<#if isNotVoid>
|
||||
*\n
|
||||
* @return the ${return}\n
|
||||
</#if>
|
||||
<#if element.throwsList.referenceElements?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.throwsList.referenceElements as exception>
|
||||
* @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n
|
||||
</#list>
|
||||
*/</VALUE>
|
||||
</METHOD>
|
||||
</METHODS>
|
||||
<FIELDS>
|
||||
<FIELD>
|
||||
<KEY>^.*(public|protected|private)*.+static.*(\w\s\w)+.+</KEY>
|
||||
<VALUE>/**\n
|
||||
* The constant ${element.getName()}.\n
|
||||
*/</VALUE>
|
||||
</FIELD>
|
||||
<FIELD>
|
||||
<KEY>^.*(public|protected|private)*.*(\w\s\w)+.+</KEY>
|
||||
<VALUE>/**\n
|
||||
<#if element.parent.isInterface()>
|
||||
* The constant ${element.getName()}.\n
|
||||
<#else>
|
||||
* The ${name}.\n
|
||||
</#if> */</VALUE>
|
||||
</FIELD>
|
||||
<FIELD>
|
||||
<KEY>.+</KEY>
|
||||
<VALUE>/**\n
|
||||
<#if element.parent.isEnum()>
|
||||
*${name} ${typeName}.\n
|
||||
<#else>
|
||||
* The ${name}.\n
|
||||
</#if>*/</VALUE>
|
||||
</FIELD>
|
||||
</FIELDS>
|
||||
</TEMPLATES>
|
||||
</component>
|
||||
</project>
|
7
.idea/kotlinc.xml
generated
7
.idea/kotlinc.xml
generated
|
@ -1,7 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Kotlin2JsCompilerArguments">
|
||||
<option name="sourceMapEmbedSources" />
|
||||
<option name="sourceMapPrefix" />
|
||||
</component>
|
||||
</project>
|
18
.idea/libraries/bld.xml
generated
Normal file
18
.idea/libraries/bld.xml
generated
Normal file
|
@ -0,0 +1,18 @@
|
|||
<component name="libraryTable">
|
||||
<library name="bld">
|
||||
<CLASSES>
|
||||
<root url="file://$PROJECT_DIR$/lib/bld" />
|
||||
<root url="jar://$USER_HOME$/.bld/dist/bld-2.2.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="file://$PROJECT_DIR$/lib/bld" />
|
||||
<root url="jar://$USER_HOME$/.bld/dist/bld-2.2.1-sources.jar!/" />
|
||||
</SOURCES>
|
||||
<excluded>
|
||||
<root url="jar://$PROJECT_DIR$/lib/bld/bld-wrapper.jar!/" />
|
||||
</excluded>
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/bld" recursive="false" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/bld" recursive="false" type="SOURCES" />
|
||||
</library>
|
||||
</component>
|
17
.idea/libraries/compile.xml
generated
Normal file
17
.idea/libraries/compile.xml
generated
Normal file
|
@ -0,0 +1,17 @@
|
|||
<component name="libraryTable">
|
||||
<library name="compile">
|
||||
<CLASSES>
|
||||
<root url="file://$PROJECT_DIR$/lib/compile" />
|
||||
<root url="file://$PROJECT_DIR$/lib/provided" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="file://$PROJECT_DIR$/lib/compile" />
|
||||
<root url="file://$PROJECT_DIR$/lib/provided" />
|
||||
</SOURCES>
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="true" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="true" type="SOURCES" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/provided" recursive="true" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/provided" recursive="true" type="SOURCES" />
|
||||
</library>
|
||||
</component>
|
14
.idea/libraries/runtime.xml
generated
Normal file
14
.idea/libraries/runtime.xml
generated
Normal file
|
@ -0,0 +1,14 @@
|
|||
<component name="libraryTable">
|
||||
<library name="runtime">
|
||||
<CLASSES>
|
||||
<root url="file://$PROJECT_DIR$/lib/runtime" />
|
||||
<root url="file://$PROJECT_DIR$/src/main/resources" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="file://$PROJECT_DIR$/lib/runtime" />
|
||||
</SOURCES>
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="true" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="true" type="SOURCES" />
|
||||
</library>
|
||||
</component>
|
18
.idea/libraries/test.xml
generated
Normal file
18
.idea/libraries/test.xml
generated
Normal file
|
@ -0,0 +1,18 @@
|
|||
<component name="libraryTable">
|
||||
<library name="test">
|
||||
<CLASSES>
|
||||
<root url="file://$PROJECT_DIR$/lib/test" />
|
||||
<root url="file://$PROJECT_DIR$/lib/provided" />
|
||||
<root url="file://$PROJECT_DIR$/src/test/resources" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="file://$PROJECT_DIR$/lib/test" />
|
||||
<root url="file://$PROJECT_DIR$/lib/provided" />
|
||||
</SOURCES>
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="true" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="true" type="SOURCES" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/provided" recursive="true" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/provided" recursive="true" type="SOURCES" />
|
||||
</library>
|
||||
</component>
|
16
.idea/misc.xml
generated
16
.idea/misc.xml
generated
|
@ -1,10 +1,16 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||
<component name="JavaScriptSettings">
|
||||
<option name="languageLevel" value="ES6" />
|
||||
<component name="EntryPointsManager">
|
||||
<pattern value="net.thauvin.erik.semver.SemverBuild" method="jacoco" />
|
||||
<pattern value="net.thauvin.erik.semver.SemverBuild" method="pandoc" />
|
||||
<pattern value="net.thauvin.erik.semver.SemverBuild" method="pmd" />
|
||||
<pattern value="net.thauvin.erik.semver.SemverBuild" method="pmdCli" />
|
||||
<pattern value="net.thauvin.erik.semver.SemverBuild" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="false" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
<component name="PDMPlugin">
|
||||
<option name="skipTestSources" value="false" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="17" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/build" />
|
||||
</component>
|
||||
</project>
|
9
.idea/modules.xml
generated
Normal file
9
.idea/modules.xml
generated
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/app.iml" filepath="$PROJECT_DIR$/.idea/app.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/bld.iml" filepath="$PROJECT_DIR$/.idea/bld.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
27
.idea/modules/examples-kotlin_main.iml
generated
27
.idea/modules/examples-kotlin_main.iml
generated
|
@ -1,27 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="kotlin-language" name="Kotlin">
|
||||
<configuration version="3" platform="JVM 1.6" useProjectSettings="false">
|
||||
<compilerSettings />
|
||||
<compilerArguments>
|
||||
<option name="destination" value="$MODULE_DIR$/../../examples/kotlin/build/classes/kotlin/main" />
|
||||
<option name="classpath" value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.3.0/a134b0cfe9bb44f98b0b3e889cda07923eea9428/kotlin-stdlib-1.3.0.jar;K:/maven/repository/net/thauvin/erik/semver/1.1.0-beta/semver-1.1.0-beta.jar;C:/Users/erik/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.3.0/84a2e0288dc17cd64d692eb1e5e0de8cd5ff0846/kotlin-stdlib-common-1.3.0.jar;C:/Users/erik/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar;C:/Users/erik/.gradle/caches/modules-2/files-2.1/com.github.spullara.mustache.java/compiler/0.9.5/2d13ba8f4e9e578ef3636c064dae4ed675c8de7d/compiler-0.9.5.jar" />
|
||||
<option name="noStdlib" value="true" />
|
||||
<option name="noReflect" value="true" />
|
||||
<option name="moduleName" value="examples-kotlin" />
|
||||
<option name="addCompilerBuiltIns" value="true" />
|
||||
<option name="loadBuiltInsFromDependencies" value="true" />
|
||||
<option name="languageVersion" value="1.3" />
|
||||
<option name="apiVersion" value="1.3" />
|
||||
<option name="pluginOptions">
|
||||
<array />
|
||||
</option>
|
||||
<option name="pluginClasspaths">
|
||||
<array />
|
||||
</option>
|
||||
</compilerArguments>
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
</module>
|
34
.idea/modules/examples-kotlin_test.iml
generated
34
.idea/modules/examples-kotlin_test.iml
generated
|
@ -1,34 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="kotlin-language" name="Kotlin">
|
||||
<configuration version="3" platform="JVM 1.6" useProjectSettings="false">
|
||||
<compilerSettings />
|
||||
<compilerArguments>
|
||||
<option name="destination" value="$MODULE_DIR$/../../examples/kotlin/build/classes/kotlin/test" />
|
||||
<option name="classpath" value="$MODULE_DIR$/../../examples/kotlin/build/classes/java/main;K:/java/semver/examples/kotlin/build/classes/kotlin/main;K:/java/semver/examples/kotlin/build/tmp/kapt3/classes/main;C:/Users/erik/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.3.0/a134b0cfe9bb44f98b0b3e889cda07923eea9428/kotlin-stdlib-1.3.0.jar;C:/Users/erik/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.3.0/84a2e0288dc17cd64d692eb1e5e0de8cd5ff0846/kotlin-stdlib-common-1.3.0.jar;C:/Users/erik/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar" />
|
||||
<option name="noStdlib" value="true" />
|
||||
<option name="noReflect" value="true" />
|
||||
<option name="moduleName" value="examples-kotlin" />
|
||||
<option name="addCompilerBuiltIns" value="true" />
|
||||
<option name="loadBuiltInsFromDependencies" value="true" />
|
||||
<option name="friendPaths">
|
||||
<array>
|
||||
<option value="$MODULE_DIR$/../../examples/kotlin/build/tmp/kapt3/classes/main" />
|
||||
<option value="$MODULE_DIR$/../../examples/kotlin/build/classes/java/main" />
|
||||
<option value="$MODULE_DIR$/../../examples/kotlin/build/classes/kotlin/main" />
|
||||
</array>
|
||||
</option>
|
||||
<option name="languageVersion" value="1.3" />
|
||||
<option name="apiVersion" value="1.3" />
|
||||
<option name="pluginOptions">
|
||||
<array />
|
||||
</option>
|
||||
<option name="pluginClasspaths">
|
||||
<array />
|
||||
</option>
|
||||
</compilerArguments>
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
</module>
|
13
.idea/runConfigurations/Run Tests.xml
generated
Normal file
13
.idea/runConfigurations/Run Tests.xml
generated
Normal file
|
@ -0,0 +1,13 @@
|
|||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="Run Tests" type="JUnit" factoryName="JUnit">
|
||||
<module name="app" />
|
||||
<option name="PACKAGE_NAME" value="moog" />
|
||||
<option name="MAIN_CLASS_NAME" value="net.thauvin.erik" />
|
||||
<option name="METHOD_NAME" value="" />
|
||||
<option name="TEST_OBJECT" value="directory" />
|
||||
<dir value="$PROJECT_DIR$/src/test/java" />
|
||||
<method v="2">
|
||||
<option name="Make" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
</component>
|
2
.idea/semver.iml
generated
2
.idea/semver.iml
generated
|
@ -1,2 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4" />
|
2
.idea/vcs.xml
generated
2
.idea/vcs.xml
generated
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
|
@ -1,7 +0,0 @@
|
|||
language: java
|
||||
|
||||
jdk:
|
||||
- oraclejdk8
|
||||
|
||||
before_install:
|
||||
- chmod +x gradlew
|
79
CHANGELOG.md
Normal file
79
CHANGELOG.md
Normal file
|
@ -0,0 +1,79 @@
|
|||
# Changelog
|
||||
|
||||
## [1.2.1](https://github.com/ethauvin/semver/tree/1.2.1) (2023-10-01)
|
||||
|
||||
[Full Changelog](https://github.com/ethauvin/semver/compare/1.2.0...1.2.1)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- Move from Gradle to bld [\#7](https://github.com/ethauvin/semver/issues/7)
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- NPE with Java 12 and Kotlin 1.3.30 [\#1](https://github.com/ethauvin/semver/issues/1)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Under Java 12 and Gradle 5.4.1 the properties file is not found. [\#6](https://github.com/ethauvin/semver/issues/6)
|
||||
|
||||
## [1.2.0](https://github.com/ethauvin/semver/tree/1.2.0) (2019-05-25)
|
||||
|
||||
[Full Changelog](https://github.com/ethauvin/semver/compare/1.1.1...1.2.0)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- Calculate the version internally. [\#4](https://github.com/ethauvin/semver/issues/4)
|
||||
- Attempt to compile non-existent Java source in Gradle project using Kapt [\#3](https://github.com/ethauvin/semver/issues/3)
|
||||
- kapt and Kotlin 1.3.30 require kapt.use.worker.api=true [\#2](https://github.com/ethauvin/semver/issues/2)
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- Default template is not found in 1.1.1 [\#5](https://github.com/ethauvin/semver/issues/5)
|
||||
|
||||
## [1.1.1](https://github.com/ethauvin/semver/tree/1.1.1) (2019-03-31)
|
||||
|
||||
[Full Changelog](https://github.com/ethauvin/semver/compare/1.1.0-beta...1.1.1)
|
||||
|
||||
## [1.1.0-beta](https://github.com/ethauvin/semver/tree/1.1.0-beta) (2018-11-04)
|
||||
|
||||
[Full Changelog](https://github.com/ethauvin/semver/compare/1.0.1...1.1.0-beta)
|
||||
|
||||
## [1.0.1](https://github.com/ethauvin/semver/tree/1.0.1) (2017-05-30)
|
||||
|
||||
[Full Changelog](https://github.com/ethauvin/semver/compare/1.0.0...1.0.1)
|
||||
|
||||
## [1.0.0](https://github.com/ethauvin/semver/tree/1.0.0) (2017-05-10)
|
||||
|
||||
[Full Changelog](https://github.com/ethauvin/semver/compare/0.9.6-beta...1.0.0)
|
||||
|
||||
## [0.9.6-beta](https://github.com/ethauvin/semver/tree/0.9.6-beta) (2016-07-15)
|
||||
|
||||
[Full Changelog](https://github.com/ethauvin/semver/compare/0.9.5-beta...0.9.6-beta)
|
||||
|
||||
## [0.9.5-beta](https://github.com/ethauvin/semver/tree/0.9.5-beta) (2016-02-03)
|
||||
|
||||
[Full Changelog](https://github.com/ethauvin/semver/compare/0.9.4-beta...0.9.5-beta)
|
||||
|
||||
## [0.9.4-beta](https://github.com/ethauvin/semver/tree/0.9.4-beta) (2016-01-29)
|
||||
|
||||
[Full Changelog](https://github.com/ethauvin/semver/compare/0.9.3-beta...0.9.4-beta)
|
||||
|
||||
## [0.9.3-beta](https://github.com/ethauvin/semver/tree/0.9.3-beta) (2016-01-28)
|
||||
|
||||
[Full Changelog](https://github.com/ethauvin/semver/compare/0.9.2-beta...0.9.3-beta)
|
||||
|
||||
## [0.9.2-beta](https://github.com/ethauvin/semver/tree/0.9.2-beta) (2016-01-25)
|
||||
|
||||
[Full Changelog](https://github.com/ethauvin/semver/compare/0.9.1-beta...0.9.2-beta)
|
||||
|
||||
## [0.9.1-beta](https://github.com/ethauvin/semver/tree/0.9.1-beta) (2016-01-25)
|
||||
|
||||
[Full Changelog](https://github.com/ethauvin/semver/compare/0.9.0-beta...0.9.1-beta)
|
||||
|
||||
## [0.9.0-beta](https://github.com/ethauvin/semver/tree/0.9.0-beta) (2016-01-24)
|
||||
|
||||
[Full Changelog](https://github.com/ethauvin/semver/compare/aeee81544c6d2881ccf02458fcef1f6ba1c9c169...0.9.0-beta)
|
||||
|
||||
|
||||
|
||||
\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
|
|
@ -1,4 +1,4 @@
|
|||
Copyright (c) 2016-2018, Erik C. Thauvin (erik@thauvin.net)
|
||||
Copyright (c) 2016-2024, Erik C. Thauvin (erik@thauvin.net)
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
|
|
289
README.md
289
README.md
|
@ -1,32 +1,62 @@
|
|||
# Semantic Version Annotation Processor
|
||||
|
||||
[](http://opensource.org/licenses/BSD-3-Clause) [](https://github.com/ethauvin/semver/releases/latest) [](https://maven-badges.herokuapp.com/maven-central/net.thauvin.erik/semver) [  ](https://bintray.com/ethauvin/maven/SemVer/_latestVersion)
|
||||
[](https://snyk.io/test/github/ethauvin/semver?targetFile=build.gradle) [](https://travis-ci.org/ethauvin/semver) [](https://ci.appveyor.com/project/ethauvin/semver) [](https://circleci.com/gh/ethauvin/semver/tree/master)
|
||||
[](https://opensource.org/licenses/BSD-3-Clause)
|
||||
[](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)
|
||||
[](https://rife2.com/bld)
|
||||
[](https://github.com/ethauvin/semver/releases/latest)
|
||||
[](https://oss.sonatype.org/content/repositories/snapshots/net/thauvin/erik/semver/)
|
||||
[](https://central.sonatype.com/artifact/net.thauvin.erik/semver)
|
||||
|
||||
An [annotation processor](https://docs.oracle.com/javase/8/docs/api/javax/annotation/processing/Processor.html) that automatically generates a `GeneratedVersion` class based on a [Mustache](https://mustache.github.io/) template and containing the [semantic version](http://semver.org/) (major, minor, patch, etc.) that is read from a `Properties` file or defined in the [annotation](https://docs.oracle.com/javase/tutorial/java/annotations/basics.html).
|
||||
[](https://sonarcloud.io/dashboard?id=ethauvin_semver)
|
||||
[](https://github.com/ethauvin/semver/actions/workflows/bld.yml)
|
||||
[](https://ci.appveyor.com/project/ethauvin/semver)
|
||||
[](https://circleci.com/gh/ethauvin/semver/tree/master)
|
||||
|
||||
An [annotation processor](https://docs.oracle.com/javase/8/docs/api/javax/annotation/processing/Processor.html) that automatically generates a `GeneratedVersion` class based on a [Mustache](https://mustache.github.io/) template and containing the [semantic version](https://semver.org/) (major, minor, patch, etc.) that is read from a [Properties](https://docs.oracle.com/javase/tutorial/essential/environment/properties.html) file or defined in the [annotation](https://docs.oracle.com/javase/tutorial/java/annotations/basics.html).
|
||||
|
||||
This processor was inspired by Cédric Beust's [version-processor](https://github.com/cbeust/version-processor) and works well in conjunction with the [__Semantic Version Plugin for Gradle__](https://github.com/ethauvin/semver-gradle).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Semantic Version Annotation Processor](#semantic-version-annotation-processor)
|
||||
- [Table of Contents](#table-of-contents)
|
||||
- [Examples](#examples)
|
||||
- [Template](#template)
|
||||
- [Default Template](#default-template)
|
||||
- [Custom Template](#custom-template)
|
||||
- [Elements \& Properties](#elements--properties)
|
||||
- [Maven](#maven)
|
||||
- [bld](#bld)
|
||||
- [Gradle](#gradle)
|
||||
- [Class Generation](#class-generation)
|
||||
- [Class \& Source Generation](#class--source-generation)
|
||||
- [Kotlin](#kotlin)
|
||||
- [Kotlin \& Gradle](#kotlin--gradle)
|
||||
- [Auto-Increment](#auto-increment)
|
||||
- [Contributing](#contributing)
|
||||
|
||||
## Examples
|
||||
|
||||
* Using annotation elements:
|
||||
- Using annotation elements:
|
||||
|
||||
```java
|
||||
import net.thauvin.erik.semver.Version;
|
||||
|
||||
@Version(major = 1, minor = 0, patch = 0, preRelease = "beta")
|
||||
@Version(major = 2, minor = 1, patch = 1, preRelease = "beta")
|
||||
public class A {
|
||||
// ...
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
* Or using a [properties](https://docs.oracle.com/javase/tutorial/essential/environment/properties.html) file:
|
||||
- Or using a [properties](hhttps://github.com/ethauvin/semver/blob/master/examples/java/version.properties) file:
|
||||
|
||||
```java
|
||||
import net.thauvin.erik.semver.Version;
|
||||
|
||||
@Version(properties = "version.properties")
|
||||
public class A {
|
||||
// ...
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
```ini
|
||||
|
@ -37,11 +67,11 @@ version.patch=0
|
|||
version.prerelease=beta
|
||||
```
|
||||
|
||||
[View Example](https://github.com/ethauvin/semver/tree/master/examples)
|
||||
[View Examples](https://github.com/ethauvin/semver/tree/master/examples)
|
||||
|
||||
## Template
|
||||
|
||||
Upon running the annotation processor, a source file [`GeneratedVersion.java`](https://github.com/ethauvin/semver/blob/master/examples/java/src/generated/java/net/thauvin/erik/semver/examples/java/GeneratedVersion.java) is automatically generated with static methods to access the semantic version data. The source is based on a fully customizable [Mustache](https://mustache.github.io/) template.
|
||||
Upon running the annotation processor, a source file [GeneratedVersion.java](https://github.com/ethauvin/semver/blob/master/examples/java/src/generated/java/com/example/GeneratedVersion.java) is automatically generated with static methods to access the semantic version data. The source is based on a fully customizable Mustache [template](https://github.com/ethauvin/semver/blob/master/src/main/resources/semver.mustache).
|
||||
|
||||
To use your own template, simply create a `version.mustache` file in the project's root directory. The processor will automatically look for it.
|
||||
|
||||
|
@ -50,30 +80,27 @@ To specify your own template name, use:
|
|||
```java
|
||||
@Version(template = "version.mustache")
|
||||
public class A {
|
||||
// ...
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
### Default Template
|
||||
|
||||
The [default template](https://github.com/ethauvin/semver/blob/master/src/main/resources/semver.mustache) implements the following static fields:
|
||||
The [default template](https://github.com/ethauvin/semver/blob/master/src/main/resources/semver.mustache) implements the following static variables:
|
||||
|
||||
Field | Description | Example
|
||||
:--------------|:---------------------------------|:-----------------
|
||||
`PROJECT` | The project name, if any. | `MyProject`
|
||||
`BUILDDATE` | The build date. | [`java.util.Date`](https://docs.oracle.com/javase/8/docs/api/java/util/Date.html)
|
||||
`VERSION` | The full version string. | `1.2.3-alpha+001`
|
||||
`MAJOR` | The major version. | `1`
|
||||
`MINOR` | The minor version. | `2`
|
||||
`PATCH` | The patch version. | `3`
|
||||
`PRERELEASE` | The pre-release version, if any. | `alpha`
|
||||
`BUILDMETA` | The build metadata, if any. | `001`
|
||||
|
||||
And the following methods/functions:
|
||||
|
||||
Method | Description | Example
|
||||
:------------------------|:----------------------------------------------------------|:--------
|
||||
`preReleaseWithPrefix()` | Returns the pre-release with a prefix, `-` by default. | `-alpha`
|
||||
`buildMetaWithPrefix()` | Returns the build metadata with a prefix, `+` by default. | `+001`
|
||||
| Field | Description | Example |
|
||||
|:-------------------|:---------------------------------|:----------------------------------------------------------------------------------|
|
||||
| `PROJECT` | The project name, if any. | `MyProject` |
|
||||
| `BUILDDATE` | The build date. | [`java.util.Date`](https://docs.oracle.com/javase/8/docs/api/java/util/Date.html) |
|
||||
| `VERSION` | The full version string. | `1.2.3-alpha+001` |
|
||||
| `MAJOR` | The major version. | `1` |
|
||||
| `MINOR` | The minor version. | `2` |
|
||||
| `PATCH` | The patch version. | `3` |
|
||||
| `PRERELEASE` | The pre-release version, if any. | `alpha` |
|
||||
| `PRERELASE_PREFIX` | The pre-release prefix | `-` |
|
||||
| `BUILDMETA` | The build metadata, if any. | `001` |
|
||||
| `BUILDMETA_PREFIX` | The metadata prefix. | `+` |
|
||||
| `SEPARATOR` | The version separator. | `.` |
|
||||
|
||||
### Custom Template
|
||||
|
||||
|
@ -81,61 +108,63 @@ A very simple custom template might look something like:
|
|||
|
||||
```java
|
||||
/* version.mustache */
|
||||
package {{packageName}}
|
||||
package {{packageName}};
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public final class {{className}} {
|
||||
public final static String PROJECT = "{{project}}";
|
||||
public final static Date DATE = new Date({{epoch}}L);
|
||||
public final static int MAJOR = {{major}};
|
||||
public final static int MINOR = {{minor}};
|
||||
public final static int PATCH = {{patch}};
|
||||
public final static String PRERELEASE = "{{preRelease}}";
|
||||
public final static String BUILDMETA = "{{buildMeta}}";
|
||||
public final static String VERSION = "{{semver}}";
|
||||
}
|
||||
```
|
||||
|
||||
The mustache variables automatically filled in by the processor are:
|
||||
|
||||
Variable | Description | Type
|
||||
:-----------------|:----------------------------|:--------
|
||||
`{{packageName}}` | The package name. | `String`
|
||||
`{{className}}` | The class name. | `String`
|
||||
`{{project}}` | The project name. | `String`
|
||||
`{{epoch}}` | The build epoch/unix time. | `long`
|
||||
`{{major}}` | The major version. | `int`
|
||||
`{{minor}}` | The minor version. | `int`
|
||||
`{{patch}}` | The patch version. | `int`
|
||||
`{{preRelease}}` | The pre/release version. | `String`
|
||||
`{{buildMeta}}` | The build metadata version. | `String`
|
||||
|
||||
Please also look at this [example](https://github.com/ethauvin/mobibot/blob/master/version.mustache) using [`java.time`](https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html)
|
||||
| Variable | Description | Type |
|
||||
|:------------------------------|:----------------------------|:---------|
|
||||
| `{{packageName}}` | The package name. | `String` |
|
||||
| `{{className}}` | The class name. | `String` |
|
||||
| `{{project}}` | The project name. | `String` |
|
||||
| `{{epoch}}` | The build epoch/unix time. | `long` |
|
||||
| `{{major}}` | The major version. | `int` |
|
||||
| `{{minor}}` | The minor version. | `int` |
|
||||
| `{{patch}}` | The patch version. | `int` |
|
||||
| `{{preRelease}}` | The pre-release version. | `String` |
|
||||
| `{{preReleasePrefix}}` | The pre-release prefix. | `String` |
|
||||
| `{{buildMeta}}` | The build metadata version. | `String` |
|
||||
| `{{buildMetaPrefix}}` | The metadata prefix. | `String` |
|
||||
| `{{separator}}` | The version separator. | `String` |
|
||||
| `{{semver}}` or `{{version}}` | The full semantic version. | `String` |
|
||||
|
||||
## Elements & Properties
|
||||
|
||||
The following annotation elements and properties are available:
|
||||
|
||||
Element | Property | Description | Default
|
||||
:-------------|:---------------------|:----------------------------------|:-------------------------
|
||||
`project` | `version.project` | The project name. |
|
||||
`major` | `version.major` | The major version number. | `1`
|
||||
`minor` | `version.major` | The minor version number. | `0`
|
||||
`patch` | `version.patch` | The patch version number. | `0`
|
||||
`preRelease` | `version.prerelease` | The pre-release version. |
|
||||
`buildMeta` | `version.buildmeta` | The build metadata version. |
|
||||
`packageName` | | The package name. | _Same as annotated class_
|
||||
`className` | | The name of the generated class. | `GeneratedVersion`
|
||||
`properties` | | The properties file. |
|
||||
`template` | | The template file. | `version.mustache`
|
||||
`type` | | Either `java` or `kt` for Kotlin. | `java`
|
||||
`keysPrefix` | | The prefix for all property keys. | `version.`
|
||||
| Element | Property | Description | Default |
|
||||
|:-------------------|:----------------------------|:----------------------------------|:--------------------------|
|
||||
| `project` | `version.project` | The project name. | |
|
||||
| `major` | `version.major` | The major version number. | `1` |
|
||||
| `minor` | `version.major` | The minor version number. | `0` |
|
||||
| `patch` | `version.patch` | The patch version number. | `0` |
|
||||
| `preRelease` | `version.prerelease` | The pre-release version. | |
|
||||
| `preReleasePrefix` | `version.prerelease.prefix` | The pre-release prefix. | `-` |
|
||||
| `buildMeta` | `version.buildmeta` | The build metadata version. | |
|
||||
| `buildMetaPrefix` | `version.buildmeta.prefix` | The metadata prefix. | `+` |
|
||||
| `separator` | `version.separator` | The version separator. | `.` |
|
||||
| `packageName` | | The package name. | _Same as annotated class_ |
|
||||
| `className` | | The name of the generated class. | `GeneratedVersion` |
|
||||
| `properties` | | The properties file. | |
|
||||
| `template` | | The template file. | `version.mustache` |
|
||||
| `type` | | Either `java` or `kt` for Kotlin. | `java` |
|
||||
| `keysPrefix` | | The prefix for all property keys. | `version.` |
|
||||
|
||||
In order to easily incorporate with existing projects, the property keys may be assigned custom values:
|
||||
|
||||
```java
|
||||
@Version(
|
||||
properties = "example.properties",
|
||||
keysPrefix = "example."
|
||||
keysPrefix = "example.",
|
||||
majorKey = "maj",
|
||||
minorKey = "min",
|
||||
patchKey = "build",
|
||||
|
@ -144,7 +173,8 @@ In order to easily incorporate with existing projects, the property keys may be
|
|||
projectKey = "project"
|
||||
)
|
||||
public class Example {
|
||||
// ...
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
```ini
|
||||
|
@ -158,64 +188,86 @@ example.meta=
|
|||
# ...
|
||||
```
|
||||
|
||||
> :warning: `keysPrefix` is a new element in `1.1.0` and may break older versions when using custom property keys.
|
||||
> :warning: `keysPrefix` is a new element staring in `1.1.0` and may break older versions when using custom property keys.\
|
||||
> :zap: A quick fix is to include `keysPrefix=""` in the annotation to remove the default `version.` prefix.
|
||||
|
||||
## Usage with Maven, Grail, Kobalt and Kotlin
|
||||
## Maven
|
||||
|
||||
### Maven
|
||||
|
||||
To install and run from [Maven](http://maven.apache.org/), configure an artifact as follows:
|
||||
To install and run from [Maven](https://maven.apache.org/), configure an artifact as follows:
|
||||
|
||||
```xml
|
||||
<dependency>
|
||||
<groupId>net.thauvin.erik</groupId>
|
||||
<artifactId>semver</artifactId>
|
||||
<version>1.1.0-beta</version>
|
||||
<version>1.2.1</version>
|
||||
</dependency>
|
||||
```
|
||||
|
||||
### Gradle
|
||||
```console
|
||||
mvn verify
|
||||
```
|
||||
|
||||
#### Class Generation
|
||||
Please look at [pom.xml](https://github.com/ethauvin/semver/blob/master/examples/java/gradle/pom.xml) in the [examples/java/gradle](https://github.com/ethauvin/semver/tree/master/examples/java/gradle) directory for a sample:
|
||||
|
||||
To install and run from [Gradle](https://gradle.org/), add the following to the `build.gradle` file:
|
||||
|
||||
```gradle
|
||||
dependencies {
|
||||
annotationProcessor 'net.thauvin.erik:semver:1.1.0-beta'
|
||||
compileOnly 'net.thauvin.erik:semver:1.1.0-beta'
|
||||
## bld
|
||||
|
||||
To install and run from [bld](https://rife2.com/bld), just add the dependency to your build file:
|
||||
|
||||
```java
|
||||
public class ExampleBuild extends Project {
|
||||
public ExampleBuild() {
|
||||
// ...
|
||||
scope(compile)
|
||||
.include(dependency("net.thauvin.erik", "semver", version(1, 2, 1)));
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
The `GeneratedVersion` class will be automatically created in the `build/generated` directory upon compiling.
|
||||
Please look at [ExampleBuild](https://github.com/ethauvin/semver/blob/master/examples/java/bld/src/bld/java/com/example/ExampleBuild.java) in the [examples/java/bld](https://github.com/ethauvin/semver/tree/master/examples/java/bld) directory for a sample. It also shows how to incorporate the generated code into the `source tree`, more information is also available [here](https://forum.uwyn.com/post/36).
|
||||
|
||||
#### Class & Source Generation
|
||||
bld also has a [Generated Version](https://github.com/rife2/bld-generated-version) extension which provides similar functionalities.
|
||||
|
||||
In order to also incorporate the generated source code into the `source tree`, add the following to the very top of the `build.gradle` file:
|
||||
## Gradle
|
||||
|
||||
### Class Generation
|
||||
|
||||
To install and run from [Gradle](https://gradle.org/), add the following to [build.gradle](https://github.com/ethauvin/semver/blob/master/examples/java/gradle/build.gradle):
|
||||
|
||||
```gradle
|
||||
compileJava.options.annotationProcessorGeneratedSourcesDirectory = file("${projectDir}/src/generated/java")
|
||||
```
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
The `GeneratedVersion.java` file will now be located in `src/generated`.
|
||||
|
||||
Please look at the [build.gradle](https://github.com/ethauvin/semver/blob/master/examples/java/build.gradle) file in the [Java example](https://github.com/ethauvin/semver/tree/master/example/java) module directory for a sample.
|
||||
|
||||
### Kobalt
|
||||
|
||||
To install and run from [Kobalt](http://beust.com/kobalt/), add the following to the `Build.kt` file:
|
||||
|
||||
```gradle
|
||||
dependencies {
|
||||
apt("net.thauvin.erik:semver:1.1.0-beta")
|
||||
compileOnly("net.thauvin.erik:semver:1.1.0-beta")
|
||||
annotationProcessor 'net.thauvin.erik:semver:1.2.1'
|
||||
compileOnly 'net.thauvin.erik:semver:1.2.1'
|
||||
}
|
||||
|
||||
tasks.withType(JavaCompile).configureEach {
|
||||
options.compilerArgs += [ "-Asemver.project.dir=$projectDir" ]
|
||||
}
|
||||
```
|
||||
|
||||
Please look at the [Build.kt](https://github.com/ethauvin/semver/blob/master/examples/kotlin/kobalt/src/Build.kt) file in the [Kotlin example](https://github.com/ethauvin/semver/tree/master/examples/kotlin) module directory for a sample.
|
||||
The directory containing the configuration files (`version.properties`, `version.mustache`) must be specified using the `semver.project.dir` processor argument.
|
||||
|
||||
### Kotlin
|
||||
The [`GeneratedVersion.java`](https://github.com/ethauvin/semver/blob/master/examples/java/src/generated/java/com/example/GeneratedVersion.java) class will be automatically created in the `build/generated` directory upon compiling.
|
||||
|
||||
Please look at [build.gradle](https://github.com/ethauvin/semver/blob/master/examples/java/gradle/build.gradle) in the [examples/java/gradle](https://github.com/ethauvin/semver/tree/master/examples/java/gradle) directory for a sample.
|
||||
|
||||
### Class & Source Generation
|
||||
|
||||
In order to also incorporate the generated source code into the `source tree`, add the following to [build.gradle](https://github.com/ethauvin/semver/blob/master/examples/java/build.gradle):
|
||||
|
||||
```gradle
|
||||
tasks.withType(JavaCompile).configureEach {
|
||||
options.generatedSourceOutputDirectory.set(file("${projectDir}/src/generated/java"))
|
||||
}
|
||||
```
|
||||
|
||||
The [`GeneratedVersion.java`](https://github.com/ethauvin/semver/blob/master/examples/java/src/generated/java/com/example/GeneratedVersion.java) file will now be located in `src/generated`.
|
||||
|
||||
## Kotlin
|
||||
|
||||
The annotation processor also supports [Kotlin](https://kotlinlang.org/).
|
||||
|
||||
|
@ -226,15 +278,56 @@ import net.thauvin.erik.semver.Version
|
|||
|
||||
@Version(properties = "version.properties", type="kt")
|
||||
open class Main {
|
||||
// ...
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
The [Kotlin default template](https://github.com/ethauvin/semver/blob/master/src/main/resources/semver-kt.mustache) implements the same static fields and functions as the [Java template](#default-template).
|
||||
|
||||
Please look at the [Kotlin example](https://github.com/ethauvin/semver/tree/master/examples/kotlin) project for samples on using Gradle ([build.gradle.kts](https://github.com/ethauvin/semver/blob/master/examples/kotlin/build.gradle.kts)) and Kobalt ([Build.kt](https://github.com/ethauvin/semver/blob/master/examples/kotlin/kobalt/src/Build.kt)).
|
||||
Please look at the [examples/kotlin](https://github.com/ethauvin/semver/tree/master/examples/kotlin) project for a [build.gradle.kts](https://github.com/ethauvin/semver/blob/master/examples/kotlin/build.gradle.kts) sample.
|
||||
|
||||
### Kotlin & Gradle
|
||||
|
||||
To install and run from [Gradle](https://gradle.org/), add the following to [build.gradle.kts](https://github.com/ethauvin/semver/blob/master/examples/kotlin/build.gradle.kts):
|
||||
|
||||
```kotlin
|
||||
var semverProcessor = "net.thauvin.erik:semver:1.2.1"
|
||||
|
||||
dependencies {
|
||||
kapt(semverProcessor)
|
||||
compileOnly(semverProcessor)
|
||||
}
|
||||
|
||||
kapt {
|
||||
arguments {
|
||||
arg("semver.project.dir", projectDir.absolutePath)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
The directory containing the configuration files (`version.properties`, `version.mustache`) must be specified using the `semver.project.dir` processor argument.
|
||||
|
||||
## Auto-Increment
|
||||
|
||||
Incrementing the version is best left to your favorite build system. For a solution using Gradle, please have a look at the [__Semver Version Plugin for Gradle__](https://github.com/ethauvin/semver-gradle).
|
||||
|
||||
There are also full [examples](https://github.com/ethauvin/semver-gradle/tree/master/examples/annotation-processor) in both [Java](https://github.com/ethauvin/semver-gradle/tree/master/examples/annotation-processor/java) and [Kotlin](https://github.com/ethauvin/semver-gradle/tree/master/examples/annotation-processor) showing how to use both the plugin and annotation processor concurrently.
|
||||
There are also full [examples](https://github.com/ethauvin/semver-gradle/tree/master/examples/annotation-processor) in both [Java](https://github.com/ethauvin/semver-gradle/tree/master/examples/annotation-processor/java) and [Kotlin](https://github.com/ethauvin/semver-gradle/tree/master/examples/annotation-processor/kotlin) showing how to use both the plugin and annotation processor concurrently.
|
||||
|
||||
## Contributing
|
||||
|
||||
If you want to contribute to this project, all you have to do is clone the GitHub
|
||||
repository:
|
||||
|
||||
```console
|
||||
git clone git@github.com:ethauvin/semver.git
|
||||
```
|
||||
|
||||
Then use [bld](https://rife2.com/bld) to build:
|
||||
|
||||
```console
|
||||
cd semver
|
||||
./bld compile
|
||||
```
|
||||
|
||||
The project has an [IntelliJ IDEA](https://www.jetbrains.com/idea/) project structure. You can just open it after all
|
||||
the dependencies were downloaded and peruse the code.
|
||||
|
|
30
appveyor.yml
30
appveyor.yml
|
@ -1,26 +1,18 @@
|
|||
version: "{branch} {build}"
|
||||
skip_tags: true
|
||||
version: build-{build}.{branch}
|
||||
clone_depth: 3
|
||||
|
||||
build:
|
||||
verbosity: detailed
|
||||
platform: x64
|
||||
image: Visual Studio 2019
|
||||
|
||||
before_build:
|
||||
- set "JAVA_HOME=C:\Program Files\Java\jdk17"
|
||||
- set "PATH=C:\Program Files\Java\jdk17\bin;%PATH%"
|
||||
|
||||
build_script:
|
||||
- gradlew.bat assemble --info --no-daemon
|
||||
- bld.bat download compile
|
||||
|
||||
test_script:
|
||||
- gradlew.bat check --info --no-daemon
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
- bld.bat test
|
||||
|
||||
cache:
|
||||
- C:\Users\appveyor\.gradle
|
||||
|
||||
environment:
|
||||
matrix:
|
||||
- JAVA_HOME: C:\Program Files\Java\jdk1.8.0
|
||||
- JAVA_HOME: C:\Program Files (x86)\Java\jdk1.8.0
|
||||
|
||||
matrix:
|
||||
fast_finish: true
|
||||
- C:\Users\appveyor\.m2
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
#
|
||||
# javax.annotation.processing.Processor
|
||||
#
|
||||
# Copyright (c) 2016-2023, Erik C. Thauvin (erik@thauvin.net)
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are met:
|
||||
#
|
||||
# Redistributions of source code must retain the above copyright notice, this
|
||||
# list of conditions and the following disclaimer.
|
||||
#
|
||||
# Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the following disclaimer in the documentation
|
||||
# and/or other materials provided with the distribution.
|
||||
#
|
||||
# Neither the name of this project nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without
|
||||
# specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
|
||||
net.thauvin.erik.semver.VersionProcessor
|
BIN
bin/main/net/thauvin/erik/semver/Constants.class
Normal file
BIN
bin/main/net/thauvin/erik/semver/Constants.class
Normal file
Binary file not shown.
BIN
bin/main/net/thauvin/erik/semver/Version.class
Normal file
BIN
bin/main/net/thauvin/erik/semver/Version.class
Normal file
Binary file not shown.
BIN
bin/main/net/thauvin/erik/semver/VersionInfo.class
Normal file
BIN
bin/main/net/thauvin/erik/semver/VersionInfo.class
Normal file
Binary file not shown.
BIN
bin/main/net/thauvin/erik/semver/VersionProcessor.class
Normal file
BIN
bin/main/net/thauvin/erik/semver/VersionProcessor.class
Normal file
Binary file not shown.
12
bin/main/net/thauvin/erik/semver/package.html
Normal file
12
bin/main/net/thauvin/erik/semver/package.html
Normal file
|
@ -0,0 +1,12 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Semantic Version Annotation Processor</title>
|
||||
</head>
|
||||
<body>
|
||||
An annotation processor that automatically generates a <code>GeneratedVersion</code> class containing the semantic
|
||||
version (major, minor, patch, etc.) that is read from a Properties file or defined in the annotation.
|
||||
|
||||
@since 1.0
|
||||
</body>
|
||||
</html>
|
38
bin/main/semver-kt.mustache
Normal file
38
bin/main/semver-kt.mustache
Normal file
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* This file is automatically generated.
|
||||
* Do not modify! -- ALL CHANGES WILL BE ERASED!
|
||||
*/
|
||||
|
||||
package {{packageName}}
|
||||
|
||||
import java.util.Date
|
||||
|
||||
/**
|
||||
* Provides semantic version information.
|
||||
*
|
||||
* @author <a href="https://github.com/ethauvin/semver">Semantic Version Annotation Processor</a>
|
||||
*/
|
||||
object {{className}} {
|
||||
@JvmField
|
||||
val PROJECT = "{{project}}"
|
||||
@JvmField
|
||||
val BUILDDATE = Date({{epoch}}L)
|
||||
@JvmField
|
||||
val MAJOR = {{major}}
|
||||
@JvmField
|
||||
val MINOR = {{minor}}
|
||||
@JvmField
|
||||
val PATCH = {{patch}}
|
||||
@JvmField
|
||||
val PRERELEASE = "{{preRelease}}"
|
||||
@JvmField
|
||||
val PRERELEASE_PREFIX = "{{preReleasePrefix}}"
|
||||
@JvmField
|
||||
val BUILDMETA = "{{buildMeta}}"
|
||||
@JvmField
|
||||
val BUILDMEATA_PREFIX = "{{buildMetaPrefix}}"
|
||||
@JvmField
|
||||
val SEPARATOR = "{{separator}}"
|
||||
@JvmField
|
||||
val VERSION = "{{version}}"
|
||||
}
|
34
bin/main/semver.mustache
Normal file
34
bin/main/semver.mustache
Normal file
|
@ -0,0 +1,34 @@
|
|||
/*
|
||||
* This file is automatically generated.
|
||||
* Do not modify! -- ALL CHANGES WILL BE ERASED!
|
||||
*/
|
||||
|
||||
package {{packageName}};
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* Provides semantic version information.
|
||||
*
|
||||
* @author <a href="https://github.com/ethauvin/semver">Semantic Version Annotation Processor</a>
|
||||
*/
|
||||
public final class {{className}} {
|
||||
public static final String PROJECT = "{{project}}";
|
||||
public static final Date BUILDDATE = new Date({{epoch}}L);
|
||||
public static final int MAJOR = {{major}};
|
||||
public static final int MINOR = {{minor}};
|
||||
public static final int PATCH = {{patch}};
|
||||
public static final String PRERELEASE = "{{preRelease}}";
|
||||
public static final String PRERELEASE_PREFIX = "{{preReleasePrefix}}";
|
||||
public static final String BUILDMETA = "{{buildMeta}}";
|
||||
public static final String BUILDMETA_PREFIX = "{{buildMetaPrefix}}";
|
||||
public static final String SEPARATOR = "{{separator}}";
|
||||
public static final String VERSION = "{{version}}";
|
||||
|
||||
/**
|
||||
* Disables the default constructor.
|
||||
*/
|
||||
private {{className}}() {
|
||||
throw new UnsupportedOperationException("Illegal constructor call.");
|
||||
}
|
||||
}
|
BIN
bin/test/net/thauvin/erik/semver/ConstantsTest.class
Normal file
BIN
bin/test/net/thauvin/erik/semver/ConstantsTest.class
Normal file
Binary file not shown.
BIN
bin/test/net/thauvin/erik/semver/VersionInfoTest.class
Normal file
BIN
bin/test/net/thauvin/erik/semver/VersionInfoTest.class
Normal file
Binary file not shown.
BIN
bin/test/net/thauvin/erik/semver/VersionProcessorTest.class
Normal file
BIN
bin/test/net/thauvin/erik/semver/VersionProcessorTest.class
Normal file
Binary file not shown.
BIN
bin/test/net/thauvin/erik/semver/VersionTest.class
Normal file
BIN
bin/test/net/thauvin/erik/semver/VersionTest.class
Normal file
Binary file not shown.
2
bld
Executable file
2
bld
Executable file
|
@ -0,0 +1,2 @@
|
|||
#!/usr/bin/env sh
|
||||
java -jar "$(dirname "$0")/lib/bld/bld-wrapper.jar" "$0" --build net.thauvin.erik.semver.SemverBuild "$@"
|
4
bld.bat
Normal file
4
bld.bat
Normal file
|
@ -0,0 +1,4 @@
|
|||
@echo off
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
java -jar "%DIRNAME%/lib/bld/bld-wrapper.jar" "%0" --build net.thauvin.erik.semver.SemverBuild %*
|
184
build.gradle
184
build.gradle
|
@ -1,184 +0,0 @@
|
|||
plugins {
|
||||
id 'java'
|
||||
id 'maven-publish'
|
||||
id "com.jfrog.bintray" version "1.8.4"
|
||||
id "com.github.ben-manes.versions" version "0.20.0"
|
||||
id "net.thauvin.erik.gradle.semver" version "0.9.8-beta"
|
||||
id "com.github.spotbugs" version "1.6.5"
|
||||
}
|
||||
|
||||
import com.github.spotbugs.SpotBugsTask
|
||||
import org.apache.tools.ant.taskdefs.condition.Os
|
||||
|
||||
defaultTasks 'check'
|
||||
|
||||
group = 'net.thauvin.erik'
|
||||
|
||||
def mavenName = 'SemVer'
|
||||
def mavenDescription = 'Semantic Version Annotation Processor'
|
||||
def mavenUrl = 'https://github.com/ethauvin/semver'
|
||||
def mavenLicense = 'The BSD 3-Clause License'
|
||||
def mavenLicenseUrl = 'http://opensource.org/licenses/BSD-3-Clause'
|
||||
def mavenScmCon = 'https://github.com/ethauvin/semver.git'
|
||||
def mavenScmDevCon = 'git@github.com:ethauvin/semver.git'
|
||||
|
||||
def pkgLicenses = ['BSD 3-Clause']
|
||||
def pkgIssueTrackerUrl = mavenUrl + '/issues'
|
||||
def pkgLabels = ['java', 'annotation', 'processor', 'semantic', 'version']
|
||||
|
||||
sourceCompatibility = 1.8
|
||||
targetCompatibility = 1.8
|
||||
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
|
||||
|
||||
repositories {
|
||||
mavenLocal()
|
||||
jcenter()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile 'com.github.spullara.mustache.java:compiler:0.9.5'
|
||||
compileOnly 'com.github.spotbugs:spotbugs-annotations:3.1.8'
|
||||
testCompile 'org.testng:testng:6.14.3'
|
||||
}
|
||||
|
||||
bintray {
|
||||
user = project.hasProperty('bintrayUser') ? project.property('bintrayUser') : System.getenv('BINTRAY_USER')
|
||||
key = project.hasProperty('bintrayApiKey') ? project.property('bintrayApiKey') : System.getenv('BINTRAY_API_KEY')
|
||||
publications = ['MyPublication']
|
||||
dryRun = false
|
||||
pkg {
|
||||
repo = 'maven'
|
||||
name = mavenName
|
||||
licenses = pkgLicenses
|
||||
desc = mavenDescription
|
||||
websiteUrl = mavenUrl
|
||||
issueTrackerUrl = pkgIssueTrackerUrl
|
||||
vcsUrl = mavenScmCon
|
||||
labels = pkgLabels
|
||||
publicDownloadNumbers = true
|
||||
}
|
||||
}
|
||||
|
||||
task javadocJar(type: Jar, dependsOn: javadoc) {
|
||||
group = 'Build'
|
||||
description = 'Builds an archive of the javadoc docs.'
|
||||
classifier = 'javadoc'
|
||||
from javadoc.destinationDir
|
||||
}
|
||||
|
||||
task sourceJar(type: Jar) {
|
||||
group = 'Build'
|
||||
description = 'Builds an archive of the source code.'
|
||||
classifier = 'sources'
|
||||
from sourceSets.main.allSource
|
||||
}
|
||||
|
||||
artifacts {
|
||||
archives javadocJar
|
||||
archives sourceJar
|
||||
}
|
||||
|
||||
publishing {
|
||||
publications {
|
||||
MyPublication(MavenPublication) {
|
||||
from components.java
|
||||
artifact sourceJar
|
||||
artifact javadocJar
|
||||
groupId project.group
|
||||
artifactId rootProject.name
|
||||
|
||||
pom {
|
||||
name = mavenName
|
||||
description = mavenDescription
|
||||
url = mavenUrl
|
||||
licenses {
|
||||
license {
|
||||
name = mavenLicense
|
||||
url = mavenLicenseUrl
|
||||
distribution = 'repo'
|
||||
}
|
||||
}
|
||||
developers {
|
||||
developer {
|
||||
id = 'ethauvin'
|
||||
name = 'Erik C. Thauvin'
|
||||
email = 'erik@thauvin.net'
|
||||
}
|
||||
}
|
||||
scm {
|
||||
connection = "scm:git:" + mavenScmCon
|
||||
developerConnection = "scm:git:" + mavenScmDevCon
|
||||
url = mavenScmCon
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
javadoc {
|
||||
doFirst {
|
||||
title = "$mavenDescription $project.version API"
|
||||
}
|
||||
options.with {
|
||||
tags = ['created']
|
||||
author = true
|
||||
//addBooleanOption('html4', true)
|
||||
links('https://docs.oracle.com/javase/8/docs/api/')
|
||||
addStringOption('Xdoclint:none', '-quiet')
|
||||
}
|
||||
}
|
||||
|
||||
test {
|
||||
useTestNG()
|
||||
}
|
||||
|
||||
tasks.withType(SpotBugsTask) {
|
||||
reports {
|
||||
xml.enabled = false
|
||||
html.enabled = true
|
||||
}
|
||||
excludeFilter = file("$projectDir/config/spotbugs/excludeFilter.xml")
|
||||
}
|
||||
|
||||
compileJava {
|
||||
options.compilerArgs.add('-proc:none')
|
||||
}
|
||||
|
||||
compileTestJava {
|
||||
options.compilerArgs.add('-proc:none')
|
||||
}
|
||||
|
||||
bintrayUpload {
|
||||
versionName = "$project.version"
|
||||
versionDesc = "Beta version $project.version"
|
||||
versionVcsTag = "$project.version"
|
||||
signVersion = true
|
||||
}
|
||||
|
||||
task release(dependsOn: ['wrapper', 'clean', 'publishToMavenLocal']) {
|
||||
group = 'Publishing'
|
||||
description = 'Releases new version to local maven repository.'
|
||||
doFirst {
|
||||
println("Version: $version")
|
||||
}
|
||||
}
|
||||
|
||||
task pandoc(type: Exec) {
|
||||
group = 'Documentation'
|
||||
def pandoc_args = ['--from', 'markdown_github',
|
||||
'--to', 'html5',
|
||||
'-s',
|
||||
'-c', 'github-pandoc.css',
|
||||
'-o', 'docs/README.html',
|
||||
'README.md']
|
||||
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
|
||||
commandLine(['cmd', '/c', 'pandoc'] + pandoc_args)
|
||||
} else {
|
||||
executable 'pandoc'
|
||||
args pandoc_args
|
||||
}
|
||||
standardOutput = new ByteArrayOutputStream()
|
||||
ext.output = {
|
||||
return standardOutput.toString()
|
||||
}
|
||||
}
|
37
clean.sh
37
clean.sh
|
@ -1,37 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
DEBUG=false
|
||||
|
||||
rm="rm -rf"
|
||||
|
||||
if [ "$DEBUG" = true ]; then
|
||||
rm="echo rm -rf"
|
||||
fi
|
||||
|
||||
buildkt="kobalt/src/Build.kt"
|
||||
|
||||
name=$(cat $buildkt | grep -m 1 "name = " | cut -d"\"" -f 2)
|
||||
group=$(cat $buildkt | grep -m 1 "group = " | cut -d"\"" -f 2)
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
version=$(cat $buildkt | grep -m 1 "version = " | cut -d"\"" -f 2)
|
||||
else
|
||||
version="$1"
|
||||
fi
|
||||
|
||||
maven="/k/maven/repository/${group//.//}/${name}/${version}"
|
||||
kobalt="$HOME/.kobalt/cache/${group//.//}/${name}/${version}"
|
||||
localRepo="$HOME/.kobalt/localMavenRepo/${group//.//}/${name}/${version}"
|
||||
|
||||
read -p "Delete version ${version}? " -n 1 -r
|
||||
echo
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
for dir in "$kobalt" "$maven" "$localRepo"; do
|
||||
if [ -d "$dir" ]; then
|
||||
echo -e "Deleting : \e[32;1m$dir\e[0m"
|
||||
$rm "$dir"
|
||||
else
|
||||
echo -e "Not Found: \e[31;1m$dir\e[0m"
|
||||
fi
|
||||
done
|
||||
fi
|
109
config/pmd.xml
Normal file
109
config/pmd.xml
Normal file
|
@ -0,0 +1,109 @@
|
|||
<?xml version="1.0"?>
|
||||
<ruleset name="erik"
|
||||
xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 https://pmd.sourceforge.io/ruleset_2_0_0.xsd">
|
||||
<description>Erik's Ruleset</description>
|
||||
<!-- BEST PRACTICES -->
|
||||
<rule ref="category/java/bestpractices.xml">
|
||||
<exclude name="AvoidPrintStackTrace"/>
|
||||
<exclude name="GuardLogStatement"/>
|
||||
<exclude name="UnitTestContainsTooManyAsserts"/>
|
||||
<exclude name="UnitTestShouldUseTestAnnotation"/>
|
||||
</rule>
|
||||
|
||||
<rule ref="category/java/bestpractices.xml/MissingOverride">
|
||||
<properties>
|
||||
<property name="violationSuppressXPath"
|
||||
value="//MethodDeclaration[@Name='hashCode' or @Name='equals' or @Name='toString']"/>
|
||||
</properties>
|
||||
</rule>
|
||||
|
||||
|
||||
<!-- CODE STYLE -->
|
||||
<rule ref="category/java/codestyle.xml">
|
||||
<exclude name="AtLeastOneConstructor"/>
|
||||
<exclude name="ClassNamingConventions"/>
|
||||
<exclude name="CommentDefaultAccessModifier"/>
|
||||
<exclude name="ConfusingTernary"/>
|
||||
<exclude name="FieldNamingConventions"/>
|
||||
<exclude name="LocalVariableCouldBeFinal"/>
|
||||
<exclude name="LongVariable"/>
|
||||
<exclude name="MethodArgumentCouldBeFinal"/>
|
||||
<exclude name="OnlyOneReturn"/>
|
||||
<exclude name="PackageCase"/>
|
||||
<exclude name="ShortClassName"/>
|
||||
<exclude name="ShortMethodName"/>
|
||||
<exclude name="ShortVariable"/>
|
||||
<exclude name="UseExplicitTypes"/>
|
||||
<exclude name="UseUnderscoresInNumericLiterals"/>
|
||||
<exclude name="UselessParentheses"/>
|
||||
</rule>
|
||||
|
||||
<rule ref="category/java/codestyle.xml/UnnecessaryImport">
|
||||
<properties>
|
||||
<property name="violationSuppressRegex" value="Unused (static|.*\.\*).*"/>
|
||||
</properties>
|
||||
</rule>
|
||||
|
||||
<!-- DESIGN -->
|
||||
<rule ref="category/java/design.xml">
|
||||
<exclude name="AvoidCatchingGenericException"/>
|
||||
<exclude name="AvoidDeeplyNestedIfStmts"/>
|
||||
<exclude name="AvoidUncheckedExceptionsInSignatures"/>
|
||||
<exclude name="CognitiveComplexity"/>
|
||||
<exclude name="CyclomaticComplexity"/>
|
||||
<exclude name="ExcessiveParameterList"/>
|
||||
<exclude name="ExcessivePublicCount"/>
|
||||
<exclude name="GodClass"/>
|
||||
<exclude name="LawOfDemeter"/>
|
||||
<exclude name="LoosePackageCoupling"/>
|
||||
<exclude name="NPathComplexity"/>
|
||||
<exclude name="NcssCount"/>
|
||||
<exclude name="TooManyFields"/>
|
||||
<exclude name="TooManyMethods"/>
|
||||
<exclude name="UseObjectForClearerAPI"/>
|
||||
</rule>
|
||||
|
||||
<!-- DOCUMENTATION -->
|
||||
<rule ref="category/java/documentation.xml">
|
||||
<exclude name="CommentRequired"/>
|
||||
<exclude name="CommentSize"/>
|
||||
</rule>
|
||||
|
||||
<!-- ERROR PRONE -->
|
||||
<rule ref="category/java/errorprone.xml">
|
||||
<exclude name="AssignmentInOperand"/>
|
||||
<exclude name="AvoidCatchingNPE"/>
|
||||
<exclude name="AvoidDuplicateLiterals"/>
|
||||
<exclude name="AvoidFieldNameMatchingMethodName"/>
|
||||
<exclude name="AvoidFieldNameMatchingTypeName"/>
|
||||
<exclude name="AvoidLiteralsInIfCondition"/>
|
||||
<exclude name="NullAssignment"/>
|
||||
</rule>
|
||||
|
||||
<rule ref="category/java/errorprone.xml/AssignmentInOperand">
|
||||
<properties>
|
||||
<property name="allowWhile" value="true"/>
|
||||
<property name="allowFor" value="true"/>
|
||||
<property name="allowIf" value="true"/>
|
||||
</properties>
|
||||
</rule>
|
||||
<rule ref="category/java/errorprone.xml/AvoidDuplicateLiterals">
|
||||
<properties>
|
||||
<property name="skipAnnotations" value="true"/>
|
||||
</properties>
|
||||
</rule>
|
||||
|
||||
<!-- MULTITHREADING -->
|
||||
<rule ref="category/java/multithreading.xml">
|
||||
</rule>
|
||||
|
||||
<!-- PERFORMANCE -->
|
||||
<rule ref="category/java/performance.xml">
|
||||
</rule>
|
||||
|
||||
<!-- SECURITY -->
|
||||
<rule ref="category/java/security.xml">
|
||||
</rule>
|
||||
</ruleset>
|
|
@ -1,16 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<FindBugsFilter
|
||||
xmlns="https://github.com/spotbugs/filter/3.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="https://github.com/spotbugs/filter/3.0.0 https://raw.githubusercontent.com/spotbugs/spotbugs/3.1.0/spotbugs/etc/findbugsfilter.xsd">
|
||||
<!-- <Match>
|
||||
<Package name="com.foobar.*"/>
|
||||
<Class name="com.foobar.MyClass"/>
|
||||
<Or>
|
||||
<Method name="someMethod"/>
|
||||
<Method name="someOtherMethod"/>
|
||||
</Or>
|
||||
<Bug pattern="DLS_DEAD_LOCAL_STORE"/>
|
||||
<Confidence value="2"/>
|
||||
</Match>-->
|
||||
</FindBugsFilter>
|
634
docs/README.html
634
docs/README.html
|
@ -1,91 +1,218 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="generator" content="pandoc">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||||
<title></title>
|
||||
<style type="text/css">code{white-space: pre;}</style>
|
||||
<style type="text/css">
|
||||
div.sourceCode { overflow-x: auto; }
|
||||
table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
|
||||
margin: 0; padding: 0; vertical-align: baseline; border: none; }
|
||||
table.sourceCode { width: 100%; line-height: 100%; }
|
||||
td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
|
||||
td.sourceCode { padding-left: 5px; }
|
||||
code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
|
||||
code > span.dt { color: #902000; } /* DataType */
|
||||
code > span.dv { color: #40a070; } /* DecVal */
|
||||
code > span.bn { color: #40a070; } /* BaseN */
|
||||
code > span.fl { color: #40a070; } /* Float */
|
||||
code > span.ch { color: #4070a0; } /* Char */
|
||||
code > span.st { color: #4070a0; } /* String */
|
||||
code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
|
||||
code > span.ot { color: #007020; } /* Other */
|
||||
code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
|
||||
code > span.fu { color: #06287e; } /* Function */
|
||||
code > span.er { color: #ff0000; font-weight: bold; } /* Error */
|
||||
code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
|
||||
code > span.cn { color: #880000; } /* Constant */
|
||||
code > span.sc { color: #4070a0; } /* SpecialChar */
|
||||
code > span.vs { color: #4070a0; } /* VerbatimString */
|
||||
code > span.ss { color: #bb6688; } /* SpecialString */
|
||||
code > span.im { } /* Import */
|
||||
code > span.va { color: #19177c; } /* Variable */
|
||||
code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
|
||||
code > span.op { color: #666666; } /* Operator */
|
||||
code > span.bu { } /* BuiltIn */
|
||||
code > span.ex { } /* Extension */
|
||||
code > span.pp { color: #bc7a00; } /* Preprocessor */
|
||||
code > span.at { color: #7d9029; } /* Attribute */
|
||||
code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
|
||||
code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
|
||||
code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
|
||||
code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
|
||||
<meta charset="utf-8" />
|
||||
<meta name="generator" content="pandoc" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
<title>Semantic Version Annotation Processor</title>
|
||||
<style>
|
||||
code{white-space: pre-wrap;}
|
||||
span.smallcaps{font-variant: small-caps;}
|
||||
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
||||
div.column{flex: auto; overflow-x: auto;}
|
||||
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
||||
/* The extra [class] is a hack that increases specificity enough to
|
||||
override a similar rule in reveal.js */
|
||||
ul.task-list[class]{list-style: none;}
|
||||
ul.task-list li input[type="checkbox"] {
|
||||
font-size: inherit;
|
||||
width: 0.8em;
|
||||
margin: 0 0.8em 0.2em -1.6em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
|
||||
/* CSS for syntax highlighting */
|
||||
pre > code.sourceCode { white-space: pre; position: relative; }
|
||||
pre > code.sourceCode > span { line-height: 1.25; }
|
||||
pre > code.sourceCode > span:empty { height: 1.2em; }
|
||||
.sourceCode { overflow: visible; }
|
||||
code.sourceCode > span { color: inherit; text-decoration: inherit; }
|
||||
div.sourceCode { margin: 1em 0; }
|
||||
pre.sourceCode { margin: 0; }
|
||||
@media screen {
|
||||
div.sourceCode { overflow: auto; }
|
||||
}
|
||||
@media print {
|
||||
pre > code.sourceCode { white-space: pre-wrap; }
|
||||
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
|
||||
}
|
||||
pre.numberSource code
|
||||
{ counter-reset: source-line 0; }
|
||||
pre.numberSource code > span
|
||||
{ position: relative; left: -4em; counter-increment: source-line; }
|
||||
pre.numberSource code > span > a:first-child::before
|
||||
{ content: counter(source-line);
|
||||
position: relative; left: -1em; text-align: right; vertical-align: baseline;
|
||||
border: none; display: inline-block;
|
||||
-webkit-touch-callout: none; -webkit-user-select: none;
|
||||
-khtml-user-select: none; -moz-user-select: none;
|
||||
-ms-user-select: none; user-select: none;
|
||||
padding: 0 4px; width: 4em;
|
||||
color: #aaaaaa;
|
||||
}
|
||||
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
|
||||
div.sourceCode
|
||||
{ }
|
||||
@media screen {
|
||||
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
|
||||
}
|
||||
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
|
||||
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
|
||||
code span.at { color: #7d9029; } /* Attribute */
|
||||
code span.bn { color: #40a070; } /* BaseN */
|
||||
code span.bu { color: #008000; } /* BuiltIn */
|
||||
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
|
||||
code span.ch { color: #4070a0; } /* Char */
|
||||
code span.cn { color: #880000; } /* Constant */
|
||||
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
|
||||
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
|
||||
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
|
||||
code span.dt { color: #902000; } /* DataType */
|
||||
code span.dv { color: #40a070; } /* DecVal */
|
||||
code span.er { color: #ff0000; font-weight: bold; } /* Error */
|
||||
code span.ex { } /* Extension */
|
||||
code span.fl { color: #40a070; } /* Float */
|
||||
code span.fu { color: #06287e; } /* Function */
|
||||
code span.im { color: #008000; font-weight: bold; } /* Import */
|
||||
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
|
||||
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
|
||||
code span.op { color: #666666; } /* Operator */
|
||||
code span.ot { color: #007020; } /* Other */
|
||||
code span.pp { color: #bc7a00; } /* Preprocessor */
|
||||
code span.sc { color: #4070a0; } /* SpecialChar */
|
||||
code span.ss { color: #bb6688; } /* SpecialString */
|
||||
code span.st { color: #4070a0; } /* String */
|
||||
code span.va { color: #19177c; } /* Variable */
|
||||
code span.vs { color: #4070a0; } /* VerbatimString */
|
||||
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
|
||||
</style>
|
||||
<link rel="stylesheet" href="github-pandoc.css">
|
||||
<link rel="stylesheet" href="docs/github-pandoc.css" />
|
||||
<!--[if lt IE 9]>
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="semantic-version-annotation-processor">Semantic Version Annotation Processor</h1>
|
||||
<p><a href="http://opensource.org/licenses/BSD-3-Clause"><img src="https://img.shields.io/badge/license-BSD%203--Clause-blue.svg?style=flat-square" alt="License (3-Clause BSD)" /></a> <a href="https://github.com/ethauvin/semver/releases/latest"><img src="https://img.shields.io/github/release/ethauvin/semver.svg" alt="release" /></a> <a href="https://maven-badges.herokuapp.com/maven-central/net.thauvin.erik/semver"><img src="https://maven-badges.herokuapp.com/maven-central/net.thauvin.erik/semver/badge.svg" alt="Maven Central" /></a> <a href="https://bintray.com/ethauvin/maven/SemVer/_latestVersion"><img src="https://api.bintray.com/packages/ethauvin/maven/SemVer/images/download.svg" alt="Download" /></a><br />
|
||||
<a href="https://snyk.io/test/github/ethauvin/semver?targetFile=build.gradle"><img src="https://snyk.io/test/github/ethauvin/semver/badge.svg?targetFile=build.gradle" alt="Known Vulnerabilities" /></a> <a href="https://travis-ci.org/ethauvin/semver"><img src="https://travis-ci.org/ethauvin/semver.svg?branch=master" alt="Build Status" /></a> <a href="https://ci.appveyor.com/project/ethauvin/semver"><img src="https://ci.appveyor.com/api/projects/status/nbv4mxd1gpxtx69o?svg=true" alt="Build status" /></a> <a href="https://circleci.com/gh/ethauvin/semver/tree/master"><img src="https://circleci.com/gh/ethauvin/semver/tree/master.svg?style=shield" alt="CircleCI" /></a></p>
|
||||
<p>An <a href="https://docs.oracle.com/javase/8/docs/api/javax/annotation/processing/Processor.html">annotation processor</a> that automatically generates a <code>GeneratedVersion</code> class based on a <a href="https://mustache.github.io/">Mustache</a> template and containing the <a href="http://semver.org/">semantic version</a> (major, minor, patch, etc.) that is read from a <code>Properties</code> file or defined in the <a href="https://docs.oracle.com/javase/tutorial/java/annotations/basics.html">annotation</a>.</p>
|
||||
<p>This processor was inspired by Cédric Beust's <a href="https://github.com/cbeust/version-processor">version-processor</a> and works well in conjunction with the <a href="https://github.com/ethauvin/semver-gradle"><strong>Semantic Version Plugin for Gradle</strong></a>.</p>
|
||||
<h1 id="semantic-version-annotation-processor">Semantic Version
|
||||
Annotation Processor</h1>
|
||||
<p><a href="https://opensource.org/licenses/BSD-3-Clause"><img
|
||||
src="https://img.shields.io/badge/license-BSD%203--Clause-blue.svg?style=flat-square"
|
||||
alt="License (3-Clause BSD)" /></a> <a
|
||||
href="https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html"><img
|
||||
src="https://img.shields.io/badge/java-17%2B-blue" alt="Java" /></a> <a
|
||||
href="https://rife2.com/bld"><img
|
||||
src="https://img.shields.io/badge/1.9.0-FA9052?label=bld&labelColor=2392FF"
|
||||
alt="bld" /></a> <a
|
||||
href="https://github.com/ethauvin/semver/releases/latest"><img
|
||||
src="https://img.shields.io/github/release/ethauvin/semver.svg"
|
||||
alt="release" /></a> <a
|
||||
href="https://oss.sonatype.org/content/repositories/snapshots/net/thauvin/erik/semver/"><img
|
||||
src="https://img.shields.io/nexus/s/net.thauvin.erik/semver?label=snapshot&server=https%3A%2F%2Foss.sonatype.org%2F"
|
||||
alt="Nexus Snapshot" /></a> <a
|
||||
href="https://central.sonatype.com/artifact/net.thauvin.erik/semver"><img
|
||||
src="https://img.shields.io/maven-central/v/net.thauvin.erik/semver.svg"
|
||||
alt="Maven Central" /></a></p>
|
||||
<p><a href="https://sonarcloud.io/dashboard?id=ethauvin_semver"><img
|
||||
src="https://sonarcloud.io/api/project_badges/measure?project=ethauvin_semver&metric=alert_status"
|
||||
alt="Quality Gate Status" /></a> <a
|
||||
href="https://github.com/ethauvin/semver/actions/workflows/gradle.yml"><img
|
||||
src="https://github.com/ethauvin/semver/actions/workflows/gradle.yml/badge.svg"
|
||||
alt="GitHub CI" /></a> <a
|
||||
href="https://ci.appveyor.com/project/ethauvin/semver"><img
|
||||
src="https://ci.appveyor.com/api/projects/status/nbv4mxd1gpxtx69o?svg=true"
|
||||
alt="Build status" /></a> <a
|
||||
href="https://circleci.com/gh/ethauvin/semver/tree/master"><img
|
||||
src="https://circleci.com/gh/ethauvin/semver/tree/master.svg?style=shield"
|
||||
alt="CircleCI" /></a></p>
|
||||
<p>An <a
|
||||
href="https://docs.oracle.com/javase/8/docs/api/javax/annotation/processing/Processor.html">annotation
|
||||
processor</a> that automatically generates a
|
||||
<code>GeneratedVersion</code> class based on a <a
|
||||
href="https://mustache.github.io/">Mustache</a> template and containing
|
||||
the <a href="https://semver.org/">semantic version</a> (major, minor,
|
||||
patch, etc.) that is read from a <a
|
||||
href="https://docs.oracle.com/javase/tutorial/essential/environment/properties.html">Properties</a>
|
||||
file or defined in the <a
|
||||
href="https://docs.oracle.com/javase/tutorial/java/annotations/basics.html">annotation</a>.</p>
|
||||
<p>This processor was inspired by Cédric Beust's <a
|
||||
href="https://github.com/cbeust/version-processor">version-processor</a>
|
||||
and works well in conjunction with the <a
|
||||
href="https://github.com/ethauvin/semver-gradle"><strong>Semantic
|
||||
Version Plugin for Gradle</strong></a>.</p>
|
||||
<h2 id="table-of-contents">Table of Contents</h2>
|
||||
<ul>
|
||||
<li><a href="#examples">Examples</a></li>
|
||||
<li><a href="#template">Template</a>
|
||||
<ul>
|
||||
<li><a href="#default-template">Default Template</a></li>
|
||||
<li><a href="#custom-template">Custom Template</a></li>
|
||||
</ul></li>
|
||||
<li><a href="#elements--properties">Elements & Properties</a></li>
|
||||
<li><a href="#maven">Maven</a></li>
|
||||
<li><a href="#bld">bld</a></li>
|
||||
<li><a href="#gradle">Gradle</a>
|
||||
<ul>
|
||||
<li><a href="#class-generation">Class Generation</a></li>
|
||||
<li><a href="#class--source-generation">Class & Source
|
||||
Generation</a></li>
|
||||
</ul></li>
|
||||
<li><a href="#kotlin">Kotlin</a>
|
||||
<ul>
|
||||
<li><a href="#kotlin--gradle">Kotlin & Gradle</a></li>
|
||||
</ul></li>
|
||||
<li><a href="#auto-increment">Auto-Increment</a></li>
|
||||
<li><a href="#contributing">Contributing</a></li>
|
||||
</ul>
|
||||
<h2 id="examples">Examples</h2>
|
||||
<ul>
|
||||
<li>Using annotation elements:</li>
|
||||
</ul>
|
||||
<div class="sourceCode"><pre class="sourceCode java"><code class="sourceCode java"><span class="kw">import net.thauvin.erik.semver.Version;</span>
|
||||
|
||||
<span class="fu">@Version</span>(major = <span class="dv">1</span>, minor = <span class="dv">0</span>, patch = <span class="dv">0</span>, preRelease = <span class="st">"beta"</span>)
|
||||
<span class="kw">public</span> <span class="kw">class</span> A {
|
||||
<span class="co">// ...</span></code></pre></div>
|
||||
<div class="sourceCode" id="cb1"><pre
|
||||
class="sourceCode java"><code class="sourceCode java"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="kw">import</span> <span class="im">net</span><span class="op">.</span><span class="im">thauvin</span><span class="op">.</span><span class="im">erik</span><span class="op">.</span><span class="im">semver</span><span class="op">.</span><span class="im">Version</span><span class="op">;</span></span>
|
||||
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a><span class="at">@Version</span><span class="op">(</span>major <span class="op">=</span> <span class="dv">2</span><span class="op">,</span> minor <span class="op">=</span> <span class="dv">1</span><span class="op">,</span> patch <span class="op">=</span> <span class="dv">1</span><span class="op">,</span> preRelease <span class="op">=</span> <span class="st">"beta"</span><span class="op">)</span></span>
|
||||
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a><span class="kw">public</span> <span class="kw">class</span> A <span class="op">{</span></span>
|
||||
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a> <span class="co">// ...</span></span>
|
||||
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span></code></pre></div>
|
||||
<ul>
|
||||
<li>Or using a <a href="https://docs.oracle.com/javase/tutorial/essential/environment/properties.html">properties</a> file:</li>
|
||||
<li>Or using a <a
|
||||
href="hhttps://github.com/ethauvin/semver/blob/master/examples/java/version.properties">properties</a>
|
||||
file:</li>
|
||||
</ul>
|
||||
<div class="sourceCode"><pre class="sourceCode java"><code class="sourceCode java"><span class="kw">import net.thauvin.erik.semver.Version;</span>
|
||||
|
||||
<span class="fu">@Version</span>(properties = <span class="st">"version.properties"</span>)
|
||||
<span class="kw">public</span> <span class="kw">class</span> A {
|
||||
<span class="co">// ...</span></code></pre></div>
|
||||
<div class="sourceCode"><pre class="sourceCode ini"><code class="sourceCode ini"><span class="co"># version.properties</span>
|
||||
<span class="dt">version.major</span><span class="ot">=</span><span class="dv">1</span>
|
||||
<span class="dt">version.minor</span><span class="ot">=</span><span class="dv">0</span>
|
||||
<span class="dt">version.patch</span><span class="ot">=</span><span class="dv">0</span>
|
||||
<span class="dt">version.prerelease</span><span class="ot">=</span><span class="st">beta</span></code></pre></div>
|
||||
<p><a href="https://github.com/ethauvin/semver/tree/master/examples">View Example</a></p>
|
||||
<div class="sourceCode" id="cb2"><pre
|
||||
class="sourceCode java"><code class="sourceCode java"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="kw">import</span> <span class="im">net</span><span class="op">.</span><span class="im">thauvin</span><span class="op">.</span><span class="im">erik</span><span class="op">.</span><span class="im">semver</span><span class="op">.</span><span class="im">Version</span><span class="op">;</span></span>
|
||||
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a><span class="at">@Version</span><span class="op">(</span>properties <span class="op">=</span> <span class="st">"version.properties"</span><span class="op">)</span></span>
|
||||
<span id="cb2-4"><a href="#cb2-4" aria-hidden="true" tabindex="-1"></a><span class="kw">public</span> <span class="kw">class</span> A <span class="op">{</span></span>
|
||||
<span id="cb2-5"><a href="#cb2-5" aria-hidden="true" tabindex="-1"></a> <span class="co">// ...</span></span>
|
||||
<span id="cb2-6"><a href="#cb2-6" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span></code></pre></div>
|
||||
<div class="sourceCode" id="cb3"><pre
|
||||
class="sourceCode ini"><code class="sourceCode ini"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="co"># version.properties</span></span>
|
||||
<span id="cb3-2"><a href="#cb3-2" aria-hidden="true" tabindex="-1"></a><span class="dt">version.major</span><span class="ot">=</span><span class="dv">1</span></span>
|
||||
<span id="cb3-3"><a href="#cb3-3" aria-hidden="true" tabindex="-1"></a><span class="dt">version.minor</span><span class="ot">=</span><span class="dv">0</span></span>
|
||||
<span id="cb3-4"><a href="#cb3-4" aria-hidden="true" tabindex="-1"></a><span class="dt">version.patch</span><span class="ot">=</span><span class="dv">0</span></span>
|
||||
<span id="cb3-5"><a href="#cb3-5" aria-hidden="true" tabindex="-1"></a><span class="dt">version.prerelease</span><span class="ot">=</span><span class="st">beta</span></span></code></pre></div>
|
||||
<p><a
|
||||
href="https://github.com/ethauvin/semver/tree/master/examples">View
|
||||
Examples</a></p>
|
||||
<h2 id="template">Template</h2>
|
||||
<p>Upon running the annotation processor, a source file <a href="https://github.com/ethauvin/semver/blob/master/examples/java/src/generated/java/net/thauvin/erik/semver/examples/java/GeneratedVersion.java"><code>GeneratedVersion.java</code></a> is automatically generated with static methods to access the semantic version data. The source is based on a fully customizable <a href="https://mustache.github.io/">Mustache</a> template.</p>
|
||||
<p>To use your own template, simply create a <code>version.mustache</code> file in the project's root directory. The processor will automatically look for it.</p>
|
||||
<p>Upon running the annotation processor, a source file <a
|
||||
href="https://github.com/ethauvin/semver/blob/master/examples/java/src/generated/java/com/example/GeneratedVersion.java">GeneratedVersion.java</a>
|
||||
is automatically generated with static methods to access the semantic
|
||||
version data. The source is based on a fully customizable Mustache <a
|
||||
href="https://github.com/ethauvin/semver/blob/master/src/main/resources/semver.mustache">template</a>.</p>
|
||||
<p>To use your own template, simply create a
|
||||
<code>version.mustache</code> file in the project's root directory. The
|
||||
processor will automatically look for it.</p>
|
||||
<p>To specify your own template name, use:</p>
|
||||
<div class="sourceCode"><pre class="sourceCode java"><code class="sourceCode java"><span class="fu">@Version</span>(template = <span class="st">"version.mustache"</span>)
|
||||
<span class="kw">public</span> <span class="kw">class</span> A {
|
||||
<span class="co">// ...</span></code></pre></div>
|
||||
<div class="sourceCode" id="cb4"><pre
|
||||
class="sourceCode java"><code class="sourceCode java"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="at">@Version</span><span class="op">(</span>template <span class="op">=</span> <span class="st">"version.mustache"</span><span class="op">)</span></span>
|
||||
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a><span class="kw">public</span> <span class="kw">class</span> A <span class="op">{</span></span>
|
||||
<span id="cb4-3"><a href="#cb4-3" aria-hidden="true" tabindex="-1"></a> <span class="co">// ...</span></span>
|
||||
<span id="cb4-4"><a href="#cb4-4" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span></code></pre></div>
|
||||
<h3 id="default-template">Default Template</h3>
|
||||
<p>The <a href="https://github.com/ethauvin/semver/blob/master/src/main/resources/semver.mustache">default template</a> implements the following static fields:</p>
|
||||
<p>The <a
|
||||
href="https://github.com/ethauvin/semver/blob/master/src/main/resources/semver.mustache">default
|
||||
template</a> implements the following static variables:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr class="header">
|
||||
|
@ -103,7 +230,8 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
|
|||
<tr class="even">
|
||||
<td style="text-align: left;"><code>BUILDDATE</code></td>
|
||||
<td style="text-align: left;">The build date.</td>
|
||||
<td style="text-align: left;"><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Date.html"><code>java.util.Date</code></a></td>
|
||||
<td style="text-align: left;"><a
|
||||
href="https://docs.oracle.com/javase/8/docs/api/java/util/Date.html"><code>java.util.Date</code></a></td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;"><code>VERSION</code></td>
|
||||
|
@ -131,56 +259,42 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
|
|||
<td style="text-align: left;"><code>alpha</code></td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td style="text-align: left;"><code>PRERELASE_PREFIX</code></td>
|
||||
<td style="text-align: left;">The pre-release prefix</td>
|
||||
<td style="text-align: left;"><code>-</code></td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;"><code>BUILDMETA</code></td>
|
||||
<td style="text-align: left;">The build metadata, if any.</td>
|
||||
<td style="text-align: left;"><code>001</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>And the following methods/functions:</p>
|
||||
<table style="width:100%;">
|
||||
<colgroup>
|
||||
<col style="width: 27%" />
|
||||
<col style="width: 62%" />
|
||||
<col style="width: 10%" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr class="header">
|
||||
<th style="text-align: left;">Method</th>
|
||||
<th style="text-align: left;">Description</th>
|
||||
<th style="text-align: left;">Example</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;"><code>preReleaseWithPrefix()</code></td>
|
||||
<td style="text-align: left;">Returns the pre-release with a prefix, <code>-</code> by default.</td>
|
||||
<td style="text-align: left;"><code>-alpha</code></td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td style="text-align: left;"><code>buildMetaWithPrefix()</code></td>
|
||||
<td style="text-align: left;">Returns the build metadata with a prefix, <code>+</code> by default.</td>
|
||||
<td style="text-align: left;"><code>+001</code></td>
|
||||
<td style="text-align: left;"><code>BUILDMETA_PREFIX</code></td>
|
||||
<td style="text-align: left;">The metadata prefix.</td>
|
||||
<td style="text-align: left;"><code>+</code></td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;"><code>SEPARATOR</code></td>
|
||||
<td style="text-align: left;">The version separator.</td>
|
||||
<td style="text-align: left;"><code>.</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3 id="custom-template">Custom Template</h3>
|
||||
<p>A very simple custom template might look something like:</p>
|
||||
<div class="sourceCode"><pre class="sourceCode java"><code class="sourceCode java"><span class="co">/* version.mustache */</span>
|
||||
<span class="kw">package</span> {{packageName}}
|
||||
|
||||
<span class="kw">import java.util.Date;</span>
|
||||
|
||||
<span class="kw">public</span> <span class="dt">final</span> <span class="kw">class</span> {{className}} {
|
||||
<span class="kw">public</span> <span class="dt">final</span> <span class="dt">static</span> String PROJECT = <span class="st">"{{project}}"</span>;
|
||||
<span class="kw">public</span> <span class="dt">final</span> <span class="dt">static</span> Date DATE = <span class="kw">new</span> Date({{epoch}}L);
|
||||
<span class="kw">public</span> <span class="dt">final</span> <span class="dt">static</span> <span class="dt">int</span> MAJOR = {{major}};
|
||||
<span class="kw">public</span> <span class="dt">final</span> <span class="dt">static</span> <span class="dt">int</span> MINOR = {{minor}};
|
||||
<span class="kw">public</span> <span class="dt">final</span> <span class="dt">static</span> <span class="dt">int</span> PATCH = {{patch}};
|
||||
<span class="kw">public</span> <span class="dt">final</span> <span class="dt">static</span> String PRERELEASE = <span class="st">"{{preRelease}}"</span>;
|
||||
<span class="kw">public</span> <span class="dt">final</span> <span class="dt">static</span> String BUILDMETA = <span class="st">"{{buildMeta}}"</span>;
|
||||
}</code></pre></div>
|
||||
<p>The mustache variables automatically filled in by the processor are:</p>
|
||||
<div class="sourceCode" id="cb5"><pre
|
||||
class="sourceCode java"><code class="sourceCode java"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="co">/* version.mustache */</span></span>
|
||||
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a><span class="kw">package</span><span class="im"> {{packageName}}</span><span class="op">;</span></span>
|
||||
<span id="cb5-3"><a href="#cb5-3" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb5-4"><a href="#cb5-4" aria-hidden="true" tabindex="-1"></a><span class="kw">import</span> <span class="im">java</span><span class="op">.</span><span class="im">util</span><span class="op">.</span><span class="im">Date</span><span class="op">;</span></span>
|
||||
<span id="cb5-5"><a href="#cb5-5" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb5-6"><a href="#cb5-6" aria-hidden="true" tabindex="-1"></a><span class="kw">public</span> <span class="dt">final</span> <span class="kw">class</span> <span class="op">{{</span>className<span class="op">}}</span> <span class="op">{</span></span>
|
||||
<span id="cb5-7"><a href="#cb5-7" aria-hidden="true" tabindex="-1"></a> <span class="kw">public</span> <span class="dt">final</span> <span class="dt">static</span> <span class="bu">String</span> PROJECT <span class="op">=</span> <span class="st">"{{project}}"</span><span class="op">;</span></span>
|
||||
<span id="cb5-8"><a href="#cb5-8" aria-hidden="true" tabindex="-1"></a> <span class="kw">public</span> <span class="dt">final</span> <span class="dt">static</span> <span class="bu">Date</span> DATE <span class="op">=</span> <span class="kw">new</span> <span class="bu">Date</span><span class="op">({{</span>epoch<span class="op">}}</span>L<span class="op">);</span></span>
|
||||
<span id="cb5-9"><a href="#cb5-9" aria-hidden="true" tabindex="-1"></a> <span class="kw">public</span> <span class="dt">final</span> <span class="dt">static</span> <span class="bu">String</span> VERSION <span class="op">=</span> <span class="st">"{{semver}}"</span><span class="op">;</span></span>
|
||||
<span id="cb5-10"><a href="#cb5-10" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span></code></pre></div>
|
||||
<p>The mustache variables automatically filled in by the processor
|
||||
are:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr class="header">
|
||||
|
@ -227,18 +341,38 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
|
|||
</tr>
|
||||
<tr class="even">
|
||||
<td style="text-align: left;"><code>{{preRelease}}</code></td>
|
||||
<td style="text-align: left;">The pre/release version.</td>
|
||||
<td style="text-align: left;">The pre-release version.</td>
|
||||
<td style="text-align: left;"><code>String</code></td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;"><code>{{preReleasePrefix}}</code></td>
|
||||
<td style="text-align: left;">The pre-release prefix.</td>
|
||||
<td style="text-align: left;"><code>String</code></td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td style="text-align: left;"><code>{{buildMeta}}</code></td>
|
||||
<td style="text-align: left;">The build metadata version.</td>
|
||||
<td style="text-align: left;"><code>String</code></td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;"><code>{{buildMetaPrefix}}</code></td>
|
||||
<td style="text-align: left;">The metadata prefix.</td>
|
||||
<td style="text-align: left;"><code>String</code></td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td style="text-align: left;"><code>{{separator}}</code></td>
|
||||
<td style="text-align: left;">The version separator.</td>
|
||||
<td style="text-align: left;"><code>String</code></td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;"><code>{{semver}}</code> or
|
||||
<code>{{version}}</code></td>
|
||||
<td style="text-align: left;">The full semantic version.</td>
|
||||
<td style="text-align: left;"><code>String</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Please also look at this <a href="https://github.com/ethauvin/mobibot/blob/master/version.mustache">example</a> using <a href="https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html"><code>java.time</code></a></p>
|
||||
<h2 id="elements-properties">Elements & Properties</h2>
|
||||
<h2 id="elements--properties">Elements & Properties</h2>
|
||||
<p>The following annotation elements and properties are available:</p>
|
||||
<table>
|
||||
<thead>
|
||||
|
@ -281,42 +415,62 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
|
|||
<td style="text-align: left;"></td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td style="text-align: left;"><code>preReleasePrefix</code></td>
|
||||
<td
|
||||
style="text-align: left;"><code>version.prerelease.prefix</code></td>
|
||||
<td style="text-align: left;">The pre-release prefix.</td>
|
||||
<td style="text-align: left;"><code>-</code></td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;"><code>buildMeta</code></td>
|
||||
<td style="text-align: left;"><code>version.buildmeta</code></td>
|
||||
<td style="text-align: left;">The build metadata version.</td>
|
||||
<td style="text-align: left;"></td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td style="text-align: left;"><code>buildMetaPrefix</code></td>
|
||||
<td style="text-align: left;"><code>version.buildmeta.prefix</code></td>
|
||||
<td style="text-align: left;">The metadata prefix.</td>
|
||||
<td style="text-align: left;"><code>+</code></td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;"><code>separator</code></td>
|
||||
<td style="text-align: left;"><code>version.separator</code></td>
|
||||
<td style="text-align: left;">The version separator.</td>
|
||||
<td style="text-align: left;"><code>.</code></td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td style="text-align: left;"><code>packageName</code></td>
|
||||
<td style="text-align: left;"></td>
|
||||
<td style="text-align: left;">The package name.</td>
|
||||
<td style="text-align: left;"><em>Same as annotated class</em></td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;"><code>className</code></td>
|
||||
<td style="text-align: left;"></td>
|
||||
<td style="text-align: left;">The name of the generated class.</td>
|
||||
<td style="text-align: left;"><code>GeneratedVersion</code></td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<tr class="even">
|
||||
<td style="text-align: left;"><code>properties</code></td>
|
||||
<td style="text-align: left;"></td>
|
||||
<td style="text-align: left;">The properties file.</td>
|
||||
<td style="text-align: left;"></td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;"><code>template</code></td>
|
||||
<td style="text-align: left;"></td>
|
||||
<td style="text-align: left;">The template file.</td>
|
||||
<td style="text-align: left;"><code>version.mustache</code></td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<tr class="even">
|
||||
<td style="text-align: left;"><code>type</code></td>
|
||||
<td style="text-align: left;"></td>
|
||||
<td style="text-align: left;">Either <code>java</code> or <code>kt</code> for Kotlin.</td>
|
||||
<td style="text-align: left;">Either <code>java</code> or
|
||||
<code>kt</code> for Kotlin.</td>
|
||||
<td style="text-align: left;"><code>java</code></td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;"><code>keysPrefix</code></td>
|
||||
<td style="text-align: left;"></td>
|
||||
<td style="text-align: left;">The prefix for all property keys.</td>
|
||||
|
@ -324,71 +478,183 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>In order to easily incorporate with existing projects, the property keys may be assigned custom values:</p>
|
||||
<div class="sourceCode"><pre class="sourceCode java"><code class="sourceCode java"><span class="fu">@Version</span>(
|
||||
properties = <span class="st">"example.properties"</span>,
|
||||
keysPrefix = <span class="st">"example."</span>
|
||||
majorKey = <span class="st">"maj"</span>,
|
||||
minorKey = <span class="st">"min"</span>,
|
||||
patchKey = <span class="st">"build"</span>,
|
||||
preReleaseKey = <span class="st">"rel"</span>,
|
||||
buildMetaKey = <span class="st">"meta"</span>,
|
||||
projectKey = <span class="st">"project"</span>
|
||||
)
|
||||
<span class="kw">public</span> <span class="kw">class</span> Example {
|
||||
<span class="co">// ...</span></code></pre></div>
|
||||
<div class="sourceCode"><pre class="sourceCode ini"><code class="sourceCode ini"><span class="co"># example.properties</span>
|
||||
<span class="dt">example.project</span><span class="ot">=</span><span class="st">Example</span>
|
||||
<span class="dt">example.maj</span><span class="ot">=</span><span class="dv">1</span>
|
||||
<span class="dt">example.min</span><span class="ot">=</span><span class="dv">0</span>
|
||||
<span class="dt">example.build</span><span class="ot">=</span><span class="dv">0</span>
|
||||
<span class="dt">example.rel</span><span class="ot">=</span><span class="st">beta</span>
|
||||
<span class="dt">example.meta</span><span class="ot">=</span>
|
||||
<span class="co"># ...</span></code></pre></div>
|
||||
<p>In order to easily incorporate with existing projects, the property
|
||||
keys may be assigned custom values:</p>
|
||||
<div class="sourceCode" id="cb6"><pre
|
||||
class="sourceCode java"><code class="sourceCode java"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a><span class="at">@Version</span><span class="op">(</span></span>
|
||||
<span id="cb6-2"><a href="#cb6-2" aria-hidden="true" tabindex="-1"></a> properties <span class="op">=</span> <span class="st">"example.properties"</span><span class="op">,</span></span>
|
||||
<span id="cb6-3"><a href="#cb6-3" aria-hidden="true" tabindex="-1"></a> keysPrefix <span class="op">=</span> <span class="st">"example."</span><span class="op">,</span></span>
|
||||
<span id="cb6-4"><a href="#cb6-4" aria-hidden="true" tabindex="-1"></a> majorKey <span class="op">=</span> <span class="st">"maj"</span><span class="op">,</span></span>
|
||||
<span id="cb6-5"><a href="#cb6-5" aria-hidden="true" tabindex="-1"></a> minorKey <span class="op">=</span> <span class="st">"min"</span><span class="op">,</span></span>
|
||||
<span id="cb6-6"><a href="#cb6-6" aria-hidden="true" tabindex="-1"></a> patchKey <span class="op">=</span> <span class="st">"build"</span><span class="op">,</span></span>
|
||||
<span id="cb6-7"><a href="#cb6-7" aria-hidden="true" tabindex="-1"></a> preReleaseKey <span class="op">=</span> <span class="st">"rel"</span><span class="op">,</span></span>
|
||||
<span id="cb6-8"><a href="#cb6-8" aria-hidden="true" tabindex="-1"></a> buildMetaKey <span class="op">=</span> <span class="st">"meta"</span><span class="op">,</span></span>
|
||||
<span id="cb6-9"><a href="#cb6-9" aria-hidden="true" tabindex="-1"></a> projectKey <span class="op">=</span> <span class="st">"project"</span></span>
|
||||
<span id="cb6-10"><a href="#cb6-10" aria-hidden="true" tabindex="-1"></a><span class="op">)</span></span>
|
||||
<span id="cb6-11"><a href="#cb6-11" aria-hidden="true" tabindex="-1"></a><span class="kw">public</span> <span class="kw">class</span> Example <span class="op">{</span></span>
|
||||
<span id="cb6-12"><a href="#cb6-12" aria-hidden="true" tabindex="-1"></a> <span class="co">// ...</span></span>
|
||||
<span id="cb6-13"><a href="#cb6-13" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span></code></pre></div>
|
||||
<div class="sourceCode" id="cb7"><pre
|
||||
class="sourceCode ini"><code class="sourceCode ini"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a><span class="co"># example.properties</span></span>
|
||||
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true" tabindex="-1"></a><span class="dt">example.project</span><span class="ot">=</span><span class="st">Example</span></span>
|
||||
<span id="cb7-3"><a href="#cb7-3" aria-hidden="true" tabindex="-1"></a><span class="dt">example.maj</span><span class="ot">=</span><span class="dv">1</span></span>
|
||||
<span id="cb7-4"><a href="#cb7-4" aria-hidden="true" tabindex="-1"></a><span class="dt">example.min</span><span class="ot">=</span><span class="dv">0</span></span>
|
||||
<span id="cb7-5"><a href="#cb7-5" aria-hidden="true" tabindex="-1"></a><span class="dt">example.build</span><span class="ot">=</span><span class="dv">0</span></span>
|
||||
<span id="cb7-6"><a href="#cb7-6" aria-hidden="true" tabindex="-1"></a><span class="dt">example.rel</span><span class="ot">=</span><span class="st">beta</span></span>
|
||||
<span id="cb7-7"><a href="#cb7-7" aria-hidden="true" tabindex="-1"></a><span class="dt">example.meta</span><span class="ot">=</span></span>
|
||||
<span id="cb7-8"><a href="#cb7-8" aria-hidden="true" tabindex="-1"></a><span class="co"># ...</span></span></code></pre></div>
|
||||
<blockquote>
|
||||
<p>⚠️ <code>keysPrefix</code> is a new element in <code>1.1.0</code> and may break older versions when using custom property keys.<br />
|
||||
⚡ A quick fix is to include <code>keysPrefix=""</code> in the annotation to remove the default <code>version.</code> prefix.</p>
|
||||
<p><span class="emoji" data-emoji="warning">⚠️</span>
|
||||
<code>keysPrefix</code> is a new element staring in <code>1.1.0</code>
|
||||
and may break older versions when using custom property keys.<br />
|
||||
<span class="emoji" data-emoji="zap">⚡</span> A quick fix is to include
|
||||
<code>keysPrefix=""</code> in the annotation to remove the default
|
||||
<code>version.</code> prefix.</p>
|
||||
</blockquote>
|
||||
<h2 id="usage-with-maven-grail-kobalt-and-kotlin">Usage with Maven, Grail, Kobalt and Kotlin</h2>
|
||||
<h3 id="maven">Maven</h3>
|
||||
<p>To install and run from <a href="http://maven.apache.org/">Maven</a>, configure an artifact as follows:</p>
|
||||
<div class="sourceCode"><pre class="sourceCode xml"><code class="sourceCode xml"><span class="kw"><dependency></span>
|
||||
<span class="kw"><groupId></span>net.thauvin.erik<span class="kw"></groupId></span>
|
||||
<span class="kw"><artifactId></span>semver<span class="kw"></artifactId></span>
|
||||
<span class="kw"><version></span>1.1.0-beta<span class="kw"></version></span>
|
||||
<span class="kw"></dependency></span></code></pre></div>
|
||||
<h3 id="gradle">Gradle</h3>
|
||||
<h4 id="class-generation">Class Generation</h4>
|
||||
<p>To install and run from <a href="https://gradle.org/">Gradle</a>, add the following to the <code>build.gradle</code> file:</p>
|
||||
<pre class="gradle"><code>dependencies {
|
||||
annotationProcessor 'net.thauvin.erik:semver:1.1.0-beta'
|
||||
compileOnly 'net.thauvin.erik:semver:1.1.0-beta'
|
||||
}</code></pre>
|
||||
<p>The <code>GeneratedVersion</code> class will be automatically created in the <code>build/generated</code> directory upon compiling.</p>
|
||||
<h4 id="class-source-generation">Class & Source Generation</h4>
|
||||
<p>In order to also incorporate the generated source code into the <code>source tree</code>, add the following to the very top of the <code>build.gradle</code> file:</p>
|
||||
<pre class="gradle"><code>compileJava.options.annotationProcessorGeneratedSourcesDirectory = file("${projectDir}/src/generated/java")</code></pre>
|
||||
<p>The <code>GeneratedVersion.java</code> file will now be located in <code>src/generated</code>.</p>
|
||||
<p>Please look at the <a href="https://github.com/ethauvin/semver/blob/master/examples/java/build.gradle">build.gradle</a> file in the <a href="https://github.com/ethauvin/semver/tree/master/example/java">Java example</a> module directory for a sample.</p>
|
||||
<h3 id="kobalt">Kobalt</h3>
|
||||
<p>To install and run from <a href="http://beust.com/kobalt/">Kobalt</a>, add the following to the <code>Build.kt</code> file:</p>
|
||||
<pre class="gradle"><code>dependencies {
|
||||
apt("net.thauvin.erik:semver:1.1.0-beta")
|
||||
compileOnly("net.thauvin.erik:semver:1.1.0-beta")
|
||||
}</code></pre>
|
||||
<p>Please look at the <a href="https://github.com/ethauvin/semver/blob/master/examples/kotlin/kobalt/src/Build.kt">Build.kt</a> file in the <a href="https://github.com/ethauvin/semver/tree/master/examples/kotlin">Kotlin example</a> module directory for a sample.</p>
|
||||
<h3 id="kotlin">Kotlin</h3>
|
||||
<p>The annotation processor also supports <a href="https://kotlinlang.org/">Kotlin</a>.</p>
|
||||
<p>To generate a Kotlin version file, simply specify the <code>type</code> as follows:</p>
|
||||
<div class="sourceCode"><pre class="sourceCode kotlin"><code class="sourceCode kotlin"><span class="kw">import</span> net.<span class="fu">thauvin</span>.<span class="fu">erik</span>.<span class="fu">semver</span>.<span class="fu">Version</span>
|
||||
|
||||
@<span class="fu">Version</span>(properties = <span class="st">"version.properties"</span>, type=<span class="st">"kt"</span>)
|
||||
<span class="kw">open</span> <span class="kw">class</span> Main {
|
||||
<span class="co">// ...</span></code></pre></div>
|
||||
<p>The <a href="https://github.com/ethauvin/semver/blob/master/src/main/resources/semver-kt.mustache">Kotlin default template</a> implements the same static fields and functions as the <a href="#default-template">Java template</a>.</p>
|
||||
<p>Please look at the <a href="https://github.com/ethauvin/semver/tree/master/examples/kotlin">Kotlin example</a> project for samples on using Gradle (<a href="https://github.com/ethauvin/semver/blob/master/examples/kotlin/build.gradle.kts">build.gradle.kts</a>) and Kobalt (<a href="https://github.com/ethauvin/semver/blob/master/examples/kotlin/kobalt/src/Build.kt">Build.kt</a>).</p>
|
||||
<h2 id="maven">Maven</h2>
|
||||
<p>To install and run from <a
|
||||
href="https://maven.apache.org/">Maven</a>, configure an artifact as
|
||||
follows:</p>
|
||||
<div class="sourceCode" id="cb8"><pre
|
||||
class="sourceCode xml"><code class="sourceCode xml"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><<span class="kw">dependency</span>></span>
|
||||
<span id="cb8-2"><a href="#cb8-2" aria-hidden="true" tabindex="-1"></a> <<span class="kw">groupId</span>>net.thauvin.erik</<span class="kw">groupId</span>></span>
|
||||
<span id="cb8-3"><a href="#cb8-3" aria-hidden="true" tabindex="-1"></a> <<span class="kw">artifactId</span>>semver</<span class="kw">artifactId</span>></span>
|
||||
<span id="cb8-4"><a href="#cb8-4" aria-hidden="true" tabindex="-1"></a> <<span class="kw">version</span>>1.2.1</<span class="kw">version</span>></span>
|
||||
<span id="cb8-5"><a href="#cb8-5" aria-hidden="true" tabindex="-1"></a></<span class="kw">dependency</span>></span></code></pre></div>
|
||||
<p>Please look at <a
|
||||
href="https://github.com/ethauvin/semver/blob/master/examples/java/pom.xml">pom.xml</a>
|
||||
in the <a
|
||||
href="https://github.com/ethauvin/semver/tree/master/examples/java">examples/java</a>
|
||||
directory for a sample:</p>
|
||||
<div class="sourceCode" id="cb9"><pre
|
||||
class="sourceCode bash"><code class="sourceCode bash"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a><span class="ex">mvn</span> verify</span></code></pre></div>
|
||||
<h2 id="bld">bld</h2>
|
||||
<p>To install and run from <a href="https://rife2.com/bld">bld</a>, just
|
||||
add the dependency to your build file:</p>
|
||||
<div class="sourceCode" id="cb10"><pre
|
||||
class="sourceCode java"><code class="sourceCode java"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="kw">public</span> <span class="kw">class</span> ExampleBuild <span class="kw">extends</span> Project <span class="op">{</span></span>
|
||||
<span id="cb10-2"><a href="#cb10-2" aria-hidden="true" tabindex="-1"></a> <span class="kw">public</span> <span class="fu">ExampleBuild</span><span class="op">()</span> <span class="op">{</span></span>
|
||||
<span id="cb10-3"><a href="#cb10-3" aria-hidden="true" tabindex="-1"></a> <span class="co">// ...</span></span>
|
||||
<span id="cb10-4"><a href="#cb10-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">scope</span><span class="op">(</span>compile<span class="op">)</span></span>
|
||||
<span id="cb10-5"><a href="#cb10-5" aria-hidden="true" tabindex="-1"></a> <span class="op">.</span><span class="fu">include</span><span class="op">(</span><span class="fu">dependency</span><span class="op">(</span><span class="st">"net.thauvin.erik"</span><span class="op">,</span> <span class="st">"semver"</span><span class="op">,</span> <span class="fu">version</span><span class="op">(</span><span class="dv">1</span><span class="op">,</span> <span class="dv">2</span><span class="op">,</span> <span class="dv">1</span><span class="op">)));</span></span>
|
||||
<span id="cb10-6"><a href="#cb10-6" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
|
||||
<span id="cb10-7"><a href="#cb10-7" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span></code></pre></div>
|
||||
<p>Please look at <a
|
||||
href="https://github.com/ethauvin/semver/blob/master/examples/java/bld/src/bld/java/com/example/ExampleBuild.java">ExampleBuild</a>
|
||||
in the <a
|
||||
href="https://github.com/ethauvin/semver/tree/master/examples/java/bld">examples/java/bld</a>
|
||||
directory for a sample. It also shows how to incorporate the generated
|
||||
code into the <code>source tree</code>, more information is also
|
||||
available <a href="https://forum.uwyn.com/post/36">here</a>.</p>
|
||||
<p>bld also has a <a
|
||||
href="https://github.com/rife2/bld-generated-version">Generated
|
||||
Version</a> extension which provides similar functionalities.</p>
|
||||
<h2 id="gradle">Gradle</h2>
|
||||
<h3 id="class-generation">Class Generation</h3>
|
||||
<p>To install and run from <a href="https://gradle.org/">Gradle</a>, add
|
||||
the following to <a
|
||||
href="https://github.com/ethauvin/semver/blob/master/examples/java/gradle/build.gradle">build.gradle</a>:</p>
|
||||
<div class="sourceCode" id="cb11"><pre
|
||||
class="sourceCode gradle"><code class="sourceCode groovy"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a>repositories <span class="op">{</span></span>
|
||||
<span id="cb11-2"><a href="#cb11-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">mavenCentral</span><span class="op">()</span></span>
|
||||
<span id="cb11-3"><a href="#cb11-3" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span>
|
||||
<span id="cb11-4"><a href="#cb11-4" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb11-5"><a href="#cb11-5" aria-hidden="true" tabindex="-1"></a>dependencies <span class="op">{</span></span>
|
||||
<span id="cb11-6"><a href="#cb11-6" aria-hidden="true" tabindex="-1"></a> annotationProcessor <span class="st">'net.thauvin.erik:semver:1.2.1'</span></span>
|
||||
<span id="cb11-7"><a href="#cb11-7" aria-hidden="true" tabindex="-1"></a> compileOnly <span class="st">'net.thauvin.erik:semver:1.2.1'</span></span>
|
||||
<span id="cb11-8"><a href="#cb11-8" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span>
|
||||
<span id="cb11-9"><a href="#cb11-9" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb11-10"><a href="#cb11-10" aria-hidden="true" tabindex="-1"></a>tasks<span class="op">.</span><span class="fu">withType</span><span class="op">(</span>JavaCompile<span class="op">).</span><span class="fu">configureEach</span> <span class="op">{</span></span>
|
||||
<span id="cb11-11"><a href="#cb11-11" aria-hidden="true" tabindex="-1"></a> options<span class="op">.</span>compilerArgs <span class="op">+=</span> <span class="op">[</span> <span class="st">"-Asemver.project.dir=</span><span class="ss">$projectDir</span><span class="st">"</span> <span class="op">]</span></span>
|
||||
<span id="cb11-12"><a href="#cb11-12" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span></code></pre></div>
|
||||
<p>The directory containing the configuration files
|
||||
(<code>version.properties</code>, <code>version.mustache</code>) must be
|
||||
specified using the <code>semver.project.dir</code> processor
|
||||
argument.</p>
|
||||
<p>The <a
|
||||
href="https://github.com/ethauvin/semver/blob/master/examples/java/src/generated/java/com/example/GeneratedVersion.java"><code>GeneratedVersion.java</code></a>
|
||||
class will be automatically created in the <code>build/generated</code>
|
||||
directory upon compiling.</p>
|
||||
<p>Please look at <a
|
||||
href="https://github.com/ethauvin/semver/blob/master/examples/java/gradle/build.gradle">build.gradle</a>
|
||||
in the <a
|
||||
href="https://github.com/ethauvin/semver/tree/master/examples/java/gradle">examples/java/gradle</a>
|
||||
directory for a sample.</p>
|
||||
<h3 id="class--source-generation">Class & Source Generation</h3>
|
||||
<p>In order to also incorporate the generated source code into the
|
||||
<code>source tree</code>, add the following to <a
|
||||
href="https://github.com/ethauvin/semver/blob/master/examples/java/build.gradle">build.gradle</a>:</p>
|
||||
<div class="sourceCode" id="cb12"><pre
|
||||
class="sourceCode gradle"><code class="sourceCode groovy"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a>tasks<span class="op">.</span><span class="fu">withType</span><span class="op">(</span>JavaCompile<span class="op">).</span><span class="fu">configureEach</span> <span class="op">{</span></span>
|
||||
<span id="cb12-2"><a href="#cb12-2" aria-hidden="true" tabindex="-1"></a> options<span class="op">.</span>generatedSourceOutputDirectory<span class="op">.</span><span class="fu">set</span><span class="op">(</span><span class="fu">file</span><span class="op">(</span><span class="st">"</span><span class="ss">${</span>projectDir<span class="ss">}</span><span class="st">/src/generated/java"</span><span class="op">))</span></span>
|
||||
<span id="cb12-3"><a href="#cb12-3" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span></code></pre></div>
|
||||
<p>The <a
|
||||
href="https://github.com/ethauvin/semver/blob/master/examples/java/src/generated/java/com/example/GeneratedVersion.java"><code>GeneratedVersion.java</code></a>
|
||||
file will now be located in <code>src/generated</code>.</p>
|
||||
<h2 id="kotlin">Kotlin</h2>
|
||||
<p>The annotation processor also supports <a
|
||||
href="https://kotlinlang.org/">Kotlin</a>.</p>
|
||||
<p>To generate a Kotlin version file, simply specify the
|
||||
<code>type</code> as follows:</p>
|
||||
<div class="sourceCode" id="cb13"><pre
|
||||
class="sourceCode kotlin"><code class="sourceCode kotlin"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a><span class="kw">import</span> <span class="im">net</span><span class="op">.</span><span class="im">thauvin</span><span class="op">.</span><span class="im">erik</span><span class="op">.</span><span class="im">semver</span><span class="op">.</span><span class="im">Version</span></span>
|
||||
<span id="cb13-2"><a href="#cb13-2" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb13-3"><a href="#cb13-3" aria-hidden="true" tabindex="-1"></a><span class="at">@Version</span><span class="op">(</span>properties <span class="op">=</span> <span class="st">"version.properties"</span><span class="op">,</span> type<span class="op">=</span><span class="st">"kt"</span><span class="op">)</span></span>
|
||||
<span id="cb13-4"><a href="#cb13-4" aria-hidden="true" tabindex="-1"></a><span class="kw">open</span> <span class="kw">class</span> Main <span class="op">{</span></span>
|
||||
<span id="cb13-5"><a href="#cb13-5" aria-hidden="true" tabindex="-1"></a> <span class="co">// ...</span></span>
|
||||
<span id="cb13-6"><a href="#cb13-6" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span></code></pre></div>
|
||||
<p>The <a
|
||||
href="https://github.com/ethauvin/semver/blob/master/src/main/resources/semver-kt.mustache">Kotlin
|
||||
default template</a> implements the same static fields and functions as
|
||||
the <a href="#default-template">Java template</a>.</p>
|
||||
<p>Please look at the <a
|
||||
href="https://github.com/ethauvin/semver/tree/master/examples/kotlin">examples/kotlin</a>
|
||||
project for a <a
|
||||
href="https://github.com/ethauvin/semver/blob/master/examples/kotlin/build.gradle.kts">build.gradle.kts</a>
|
||||
sample.</p>
|
||||
<h3 id="kotlin--gradle">Kotlin & Gradle</h3>
|
||||
<p>To install and run from <a href="https://gradle.org/">Gradle</a>, add
|
||||
the following to <a
|
||||
href="https://github.com/ethauvin/semver/blob/master/examples/kotlin/build.gradle.kts">build.gradle.kts</a>:</p>
|
||||
<div class="sourceCode" id="cb14"><pre
|
||||
class="sourceCode kotlin"><code class="sourceCode kotlin"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a><span class="kw">var</span> <span class="va">semverProcessor</span> <span class="op">=</span> <span class="st">"net.thauvin.erik:semver:1.2.1"</span></span>
|
||||
<span id="cb14-2"><a href="#cb14-2" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb14-3"><a href="#cb14-3" aria-hidden="true" tabindex="-1"></a>dependencies <span class="op">{</span></span>
|
||||
<span id="cb14-4"><a href="#cb14-4" aria-hidden="true" tabindex="-1"></a> kapt<span class="op">(</span>semverProcessor<span class="op">)</span></span>
|
||||
<span id="cb14-5"><a href="#cb14-5" aria-hidden="true" tabindex="-1"></a> compileOnly<span class="op">(</span>semverProcessor<span class="op">)</span></span>
|
||||
<span id="cb14-6"><a href="#cb14-6" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span>
|
||||
<span id="cb14-7"><a href="#cb14-7" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb14-8"><a href="#cb14-8" aria-hidden="true" tabindex="-1"></a>kapt <span class="op">{</span></span>
|
||||
<span id="cb14-9"><a href="#cb14-9" aria-hidden="true" tabindex="-1"></a> arguments <span class="op">{</span></span>
|
||||
<span id="cb14-10"><a href="#cb14-10" aria-hidden="true" tabindex="-1"></a> arg<span class="op">(</span><span class="st">"semver.project.dir"</span><span class="op">,</span> projectDir<span class="op">)</span></span>
|
||||
<span id="cb14-11"><a href="#cb14-11" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
|
||||
<span id="cb14-12"><a href="#cb14-12" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span></code></pre></div>
|
||||
<p>The directory containing the configuration files
|
||||
(<code>version.properties</code>, <code>version.mustache</code>) must be
|
||||
specified using the <code>semver.project.dir</code> processor
|
||||
argument.</p>
|
||||
<h2 id="auto-increment">Auto-Increment</h2>
|
||||
<p>Incrementing the version is best left to your favorite build system. For a solution using Gradle, please have a look at the <a href="https://github.com/ethauvin/semver-gradle"><strong>Semver Version Plugin for Gradle</strong></a>.</p>
|
||||
<p>There are also full <a href="https://github.com/ethauvin/semver-gradle/tree/master/examples/annotation-processor">examples</a> in both <a href="https://github.com/ethauvin/semver-gradle/tree/master/examples/annotation-processor/java">Java</a> and <a href="https://github.com/ethauvin/semver-gradle/tree/master/examples/annotation-processor">Kotlin</a> showing how to use both the plugin and annotation processor concurrently.</p>
|
||||
<p>Incrementing the version is best left to your favorite build system.
|
||||
For a solution using Gradle, please have a look at the <a
|
||||
href="https://github.com/ethauvin/semver-gradle"><strong>Semver Version
|
||||
Plugin for Gradle</strong></a>.</p>
|
||||
<p>There are also full <a
|
||||
href="https://github.com/ethauvin/semver-gradle/tree/master/examples/annotation-processor">examples</a>
|
||||
in both <a
|
||||
href="https://github.com/ethauvin/semver-gradle/tree/master/examples/annotation-processor/java">Java</a>
|
||||
and <a
|
||||
href="https://github.com/ethauvin/semver-gradle/tree/master/examples/annotation-processor/kotlin">Kotlin</a>
|
||||
showing how to use both the plugin and annotation processor
|
||||
concurrently.</p>
|
||||
<h2 id="contributing">Contributing</h2>
|
||||
<p>If you want to contribute to this project, all you have to do is
|
||||
clone the GitHub repository:</p>
|
||||
<pre class="console"><code>git clone git@github.com:ethauvin/semver.git</code></pre>
|
||||
<p>Then use <a href="https://rife2.com/bld">bld</a> to build:</p>
|
||||
<pre class="console"><code>cd semver
|
||||
./bld compile</code></pre>
|
||||
<p>The project has an <a href="https://www.jetbrains.com/idea/">IntelliJ
|
||||
IDEA</a> project structure. You can just open it after all the
|
||||
dependencies were downloaded and peruse the code.</p>
|
||||
</body>
|
||||
</html>
|
||||
|
|
32
examples/.gitignore
vendored
32
examples/.gitignore
vendored
|
@ -1,32 +0,0 @@
|
|||
**/.idea/dictionaries
|
||||
**/.idea/gradle.xml
|
||||
**/.idea/libraries
|
||||
**/.idea/tasks.xml
|
||||
**/.idea/workspace.xml
|
||||
**/src/*.class
|
||||
*.code-workspace
|
||||
*.iws
|
||||
*.properties
|
||||
*.sublime-*
|
||||
.classpath
|
||||
.DS_Store
|
||||
.gradle
|
||||
.kobalt
|
||||
.nb-gradle
|
||||
.project
|
||||
.settings
|
||||
/bin
|
||||
/build
|
||||
/deploy
|
||||
/dist
|
||||
/gen
|
||||
/gradle.properties
|
||||
/local.properties
|
||||
/out
|
||||
/proguard-project.txt
|
||||
/project.properties
|
||||
/target
|
||||
/test-output
|
||||
ehthumbs.db
|
||||
kobaltBuild
|
||||
Thumbs.db
|
|
@ -1,17 +1,34 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Version 1.0
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "Usage: $0 <arg> [...]"
|
||||
echo "Usage: $0 <arg ...>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# set the examples directories
|
||||
declare -a examples=(
|
||||
"java/bld"
|
||||
"java/gradle"
|
||||
"kotlin")
|
||||
|
||||
dir=$(dirname "$(readlink -f "$0")")
|
||||
color=$(tput setaf 6)
|
||||
cyan=$(tput setaf 6)
|
||||
normal=$(tput sgr0)
|
||||
|
||||
for ex in "java" "kotlin"; do
|
||||
i=0
|
||||
for ex in "${examples[@]}"; do
|
||||
if [ $i -ne 0 ]; then
|
||||
read -p "Press [Enter] key to continue..."
|
||||
clear
|
||||
fi
|
||||
cd "$dir/$ex" || exit 1
|
||||
echo "> Project: ${color}${ex}${normal}"
|
||||
gradle clean "$@" --console=plain --no-build-cache || exit 1
|
||||
echo
|
||||
echo "> Project: ${cyan}${ex}${normal}"
|
||||
if [ -x "bld" ]; then
|
||||
./bld compile "$@" || exit 1
|
||||
else
|
||||
./gradlew --console=plain --no-build-cache clean "$@" || exit 1
|
||||
fi
|
||||
((i++))
|
||||
done
|
|
@ -1,2 +0,0 @@
|
|||
[*]
|
||||
insert_final_newline=true
|
28
examples/java/.gitignore
vendored
28
examples/java/.gitignore
vendored
|
@ -1,28 +0,0 @@
|
|||
**/.idea/dictionaries
|
||||
**/.idea/gradle.xml
|
||||
**/.idea/libraries
|
||||
**/.idea/tasks.xml
|
||||
**/.idea/workspace.xml
|
||||
*.iws
|
||||
.DS_Store
|
||||
.classpath
|
||||
.gradle
|
||||
.kobalt
|
||||
.nb-gradle
|
||||
.project
|
||||
.settings
|
||||
/bin
|
||||
/build
|
||||
/deploy
|
||||
/dist
|
||||
/gen
|
||||
/gradle.properties
|
||||
/libs
|
||||
/local.properties
|
||||
/out
|
||||
/proguard-project.txt
|
||||
/project.properties
|
||||
/test-output
|
||||
Thumbs.db
|
||||
ehthumbs.db
|
||||
kobaltBuild
|
1
examples/java/.idea/.name
generated
1
examples/java/.idea/.name
generated
|
@ -1 +0,0 @@
|
|||
examples-java
|
9
examples/java/.idea/compiler.xml
generated
9
examples/java/.idea/compiler.xml
generated
|
@ -1,9 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<bytecodeTargetLevel>
|
||||
<module name="examples-java_main" target="1.8" />
|
||||
<module name="examples-java_test" target="1.8" />
|
||||
</bytecodeTargetLevel>
|
||||
</component>
|
||||
</project>
|
6
examples/java/.idea/misc.xml
generated
6
examples/java/.idea/misc.xml
generated
|
@ -1,6 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" default="false" project-jdk-name="10" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/classes" />
|
||||
</component>
|
||||
</project>
|
10
examples/java/.idea/modules.xml
generated
10
examples/java/.idea/modules.xml
generated
|
@ -1,10 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/modules/examples-java.iml" filepath="$PROJECT_DIR$/.idea/modules/examples-java.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/modules/examples-java_main.iml" filepath="$PROJECT_DIR$/.idea/modules/examples-java_main.iml" group="examples-java" />
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/modules/examples-java_test.iml" filepath="$PROJECT_DIR$/.idea/modules/examples-java_test.iml" group="examples-java" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
13
examples/java/.idea/modules/examples-java.iml
generated
13
examples/java/.idea/modules/examples-java.iml
generated
|
@ -1,13 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module external.linked.project.id="examples-java" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$/../..">
|
||||
<excludeFolder url="file://$MODULE_DIR$/../../.gradle" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/../../build" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/../../out" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
18
examples/java/.idea/modules/examples-java_main.iml
generated
18
examples/java/.idea/modules/examples-java_main.iml
generated
|
@ -1,18 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module external.linked.project.id="examples-java:main" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="" external.system.module.type="sourceSet" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
||||
<output url="file://$MODULE_DIR$/../../out/production/classes" />
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$/../../src/generated">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../src/generated" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../src/main">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../src/main/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../src/main/resources" type="java-resource" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Gradle: net.thauvin.erik:semver:1.0.1" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.github.spullara.mustache.java:compiler:0.9.4" level="project" />
|
||||
</component>
|
||||
</module>
|
15
examples/java/.idea/modules/examples-java_test.iml
generated
15
examples/java/.idea/modules/examples-java_test.iml
generated
|
@ -1,15 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module external.linked.project.id="examples-java:test" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="" external.system.module.type="sourceSet" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
||||
<output-test url="file://$MODULE_DIR$/../../out/test/classes" />
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$/../../src/test">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../src/test/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../src/test/resources" type="java-test-resource" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module" module-name="examples-java_main" />
|
||||
</component>
|
||||
<component name="TestModuleProperties" production-module="examples-java_main" />
|
||||
</module>
|
56
examples/java/bld/.gitignore
vendored
Normal file
56
examples/java/bld/.gitignore
vendored
Normal file
|
@ -0,0 +1,56 @@
|
|||
.gradle
|
||||
.DS_Store
|
||||
build
|
||||
lib/bld/**
|
||||
!lib/bld/bld-wrapper.jar
|
||||
!lib/bld/bld-wrapper.properties
|
||||
lib/compile/
|
||||
lib/provided/
|
||||
lib/runtime/
|
||||
lib/standalone/
|
||||
lib/test/
|
||||
|
||||
# IDEA ignores
|
||||
|
||||
# User-specific
|
||||
.idea/**/workspace.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/**/usage.statistics.xml
|
||||
.idea/**/dictionaries
|
||||
.idea/**/shelf
|
||||
|
||||
# AWS User-specific
|
||||
.idea/**/aws.xml
|
||||
|
||||
# Generated files
|
||||
.idea/**/contentModel.xml
|
||||
|
||||
# Sensitive or high-churn files
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
.idea/**/dbnavigator.xml
|
||||
|
||||
# Gradle
|
||||
.idea/**/gradle.xml
|
||||
|
||||
# Mongo Explorer plugin
|
||||
.idea/**/mongoSettings.xml
|
||||
|
||||
# mpeltonen/sbt-idea plugin
|
||||
.idea_modules/
|
||||
|
||||
# JIRA plugin
|
||||
atlassian-ide-plugin.xml
|
||||
|
||||
# Cursive Clojure plugin
|
||||
.idea/replstate.xml
|
||||
|
||||
# SonarLint plugin
|
||||
.idea/sonarlint/
|
||||
|
||||
# Editor-based Rest Client
|
||||
.idea/httpRequests
|
3
examples/java/bld/.idea/.gitignore
generated
vendored
Normal file
3
examples/java/bld/.idea/.gitignore
generated
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
1
examples/java/bld/.idea/.name
generated
Normal file
1
examples/java/bld/.idea/.name
generated
Normal file
|
@ -0,0 +1 @@
|
|||
semver-examples-bld
|
30
examples/java/bld/.idea/app.iml
generated
Normal file
30
examples/java/bld/.idea/app.iml
generated
Normal file
|
@ -0,0 +1,30 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<output url="file://$MODULE_DIR$/build/main" />
|
||||
<output-test url="file://$MODULE_DIR$/build/test" />
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated" isTestSource="false" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/src/main/resources/templates" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module-library" scope="RUNTIME">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="file://$MODULE_DIR$/src/main/resources/templates" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="library" name="compile" level="project" />
|
||||
<orderEntry type="library" scope="RUNTIME" name="runtime" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="test" level="project" />
|
||||
</component>
|
||||
</module>
|
14
examples/java/bld/.idea/bld.iml
generated
Normal file
14
examples/java/bld/.idea/bld.iml
generated
Normal file
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<output url="file://$MODULE_DIR$/build/bld" />
|
||||
<output-test url="file://$MODULE_DIR$/build/bld" />
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$/src/bld">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/bld/java" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="bld" level="project" />
|
||||
</component>
|
||||
</module>
|
6
examples/java/bld/.idea/bld.xml
generated
Normal file
6
examples/java/bld/.idea/bld.xml
generated
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="BldConfiguration">
|
||||
<events />
|
||||
</component>
|
||||
</project>
|
8
examples/java/bld/.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
8
examples/java/bld/.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
|
@ -0,0 +1,8 @@
|
|||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0">
|
||||
<option name="myName" value="Project Default" />
|
||||
<inspection_tool class="JavadocDeclaration" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="ADDITIONAL_TAGS" value="created" />
|
||||
</inspection_tool>
|
||||
</profile>
|
||||
</component>
|
204
examples/java/bld/.idea/intellij-javadocs-4.0.1.xml
generated
Normal file
204
examples/java/bld/.idea/intellij-javadocs-4.0.1.xml
generated
Normal file
|
@ -0,0 +1,204 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="JavaDocConfiguration">
|
||||
<GENERAL>
|
||||
<MODE>UPDATE</MODE>
|
||||
<OVERRIDDEN_METHODS>false</OVERRIDDEN_METHODS>
|
||||
<SPLITTED_CLASS_NAME>true</SPLITTED_CLASS_NAME>
|
||||
<LEVELS>
|
||||
<LEVEL>METHOD</LEVEL>
|
||||
<LEVEL>TYPE</LEVEL>
|
||||
<LEVEL>FIELD</LEVEL>
|
||||
</LEVELS>
|
||||
<VISIBILITIES>
|
||||
<VISIBILITY>PUBLIC</VISIBILITY>
|
||||
<VISIBILITY>DEFAULT</VISIBILITY>
|
||||
<VISIBILITY>PROTECTED</VISIBILITY>
|
||||
</VISIBILITIES>
|
||||
</GENERAL>
|
||||
<TEMPLATES>
|
||||
<CLASSES>
|
||||
<CLASS>
|
||||
<KEY>^.*(public|protected|private)*.+interface\s+\w+.*</KEY>
|
||||
<VALUE>/**\n
|
||||
* The interface ${name}.\n
|
||||
<#if element.typeParameters?has_content> * \n
|
||||
</#if>
|
||||
<#list element.typeParameters as typeParameter>
|
||||
* @param <${typeParameter.name}> the type parameter\n
|
||||
</#list>
|
||||
*/</VALUE>
|
||||
</CLASS>
|
||||
<CLASS>
|
||||
<KEY>^.*(public|protected|private)*.+enum\s+\w+.*</KEY>
|
||||
<VALUE>/**\n
|
||||
* The enum ${name}.\n
|
||||
*/</VALUE>
|
||||
</CLASS>
|
||||
<CLASS>
|
||||
<KEY>^.*(public|protected|private)*.+class\s+\w+.*</KEY>
|
||||
<VALUE>/**\n
|
||||
* The type ${name}.\n
|
||||
<#if element.typeParameters?has_content> * \n
|
||||
</#if>
|
||||
<#list element.typeParameters as typeParameter>
|
||||
* @param <${typeParameter.name}> the type parameter\n
|
||||
</#list>
|
||||
*/</VALUE>
|
||||
</CLASS>
|
||||
<CLASS>
|
||||
<KEY>.+</KEY>
|
||||
<VALUE>/**\n
|
||||
* The type ${name}.\n
|
||||
*/</VALUE>
|
||||
</CLASS>
|
||||
</CLASSES>
|
||||
<CONSTRUCTORS>
|
||||
<CONSTRUCTOR>
|
||||
<KEY>.+</KEY>
|
||||
<VALUE>/**\n
|
||||
* Instantiates a new ${name}.\n
|
||||
<#if element.parameterList.parameters?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.parameterList.parameters as parameter>
|
||||
* @param ${parameter.name} the ${paramNames[parameter.name]}\n
|
||||
</#list>
|
||||
<#if element.throwsList.referenceElements?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.throwsList.referenceElements as exception>
|
||||
* @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n
|
||||
</#list>
|
||||
*/</VALUE>
|
||||
</CONSTRUCTOR>
|
||||
</CONSTRUCTORS>
|
||||
<METHODS>
|
||||
<METHOD>
|
||||
<KEY>^.*(public|protected|private)*\s*.*(\w(\s*<.+>)*)+\s+get\w+\s*\(.*\).+</KEY>
|
||||
<VALUE>/**\n
|
||||
* Gets ${partName}.\n
|
||||
<#if element.typeParameters?has_content> * \n
|
||||
</#if>
|
||||
<#list element.typeParameters as typeParameter>
|
||||
* @param <${typeParameter.name}> the type parameter\n
|
||||
</#list>
|
||||
<#if element.parameterList.parameters?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.parameterList.parameters as parameter>
|
||||
* @param ${parameter.name} the ${paramNames[parameter.name]}\n
|
||||
</#list>
|
||||
<#if isNotVoid>
|
||||
*\n
|
||||
* @return the ${partName}\n
|
||||
</#if>
|
||||
<#if element.throwsList.referenceElements?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.throwsList.referenceElements as exception>
|
||||
* @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n
|
||||
</#list>
|
||||
*/</VALUE>
|
||||
</METHOD>
|
||||
<METHOD>
|
||||
<KEY>^.*(public|protected|private)*\s*.*(void|\w(\s*<.+>)*)+\s+set\w+\s*\(.*\).+</KEY>
|
||||
<VALUE>/**\n
|
||||
* Sets ${partName}.\n
|
||||
<#if element.typeParameters?has_content> * \n
|
||||
</#if>
|
||||
<#list element.typeParameters as typeParameter>
|
||||
* @param <${typeParameter.name}> the type parameter\n
|
||||
</#list>
|
||||
<#if element.parameterList.parameters?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.parameterList.parameters as parameter>
|
||||
* @param ${parameter.name} the ${paramNames[parameter.name]}\n
|
||||
</#list>
|
||||
<#if isNotVoid>
|
||||
*\n
|
||||
* @return the ${partName}\n
|
||||
</#if>
|
||||
<#if element.throwsList.referenceElements?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.throwsList.referenceElements as exception>
|
||||
* @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n
|
||||
</#list>
|
||||
*/</VALUE>
|
||||
</METHOD>
|
||||
<METHOD>
|
||||
<KEY>^.*((public\s+static)|(static\s+public))\s+void\s+main\s*\(\s*String\s*(\[\s*\]|\.\.\.)\s+\w+\s*\).+</KEY>
|
||||
<VALUE>/**\n
|
||||
* The entry point of application.\n
|
||||
|
||||
<#if element.parameterList.parameters?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
* @param ${element.parameterList.parameters[0].name} the input arguments\n
|
||||
<#if element.throwsList.referenceElements?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.throwsList.referenceElements as exception>
|
||||
* @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n
|
||||
</#list>
|
||||
*/</VALUE>
|
||||
</METHOD>
|
||||
<METHOD>
|
||||
<KEY>.+</KEY>
|
||||
<VALUE>/**\n
|
||||
* ${name}<#if isNotVoid> ${return}</#if>.\n
|
||||
<#if element.typeParameters?has_content> * \n
|
||||
</#if>
|
||||
<#list element.typeParameters as typeParameter>
|
||||
* @param <${typeParameter.name}> the type parameter\n
|
||||
</#list>
|
||||
<#if element.parameterList.parameters?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.parameterList.parameters as parameter>
|
||||
* @param ${parameter.name} the ${paramNames[parameter.name]}\n
|
||||
</#list>
|
||||
<#if isNotVoid>
|
||||
*\n
|
||||
* @return the ${return}\n
|
||||
</#if>
|
||||
<#if element.throwsList.referenceElements?has_content>
|
||||
*\n
|
||||
</#if>
|
||||
<#list element.throwsList.referenceElements as exception>
|
||||
* @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n
|
||||
</#list>
|
||||
*/</VALUE>
|
||||
</METHOD>
|
||||
</METHODS>
|
||||
<FIELDS>
|
||||
<FIELD>
|
||||
<KEY>^.*(public|protected|private)*.+static.*(\w\s\w)+.+</KEY>
|
||||
<VALUE>/**\n
|
||||
* The constant ${element.getName()}.\n
|
||||
*/</VALUE>
|
||||
</FIELD>
|
||||
<FIELD>
|
||||
<KEY>^.*(public|protected|private)*.*(\w\s\w)+.+</KEY>
|
||||
<VALUE>/**\n
|
||||
<#if element.parent.isInterface()>
|
||||
* The constant ${element.getName()}.\n
|
||||
<#else>
|
||||
* The ${name}.\n
|
||||
</#if> */</VALUE>
|
||||
</FIELD>
|
||||
<FIELD>
|
||||
<KEY>.+</KEY>
|
||||
<VALUE>/**\n
|
||||
<#if element.parent.isEnum()>
|
||||
*${name} ${typeName}.\n
|
||||
<#else>
|
||||
* The ${name}.\n
|
||||
</#if>*/</VALUE>
|
||||
</FIELD>
|
||||
</FIELDS>
|
||||
</TEMPLATES>
|
||||
</component>
|
||||
</project>
|
18
examples/java/bld/.idea/libraries/bld.xml
generated
Normal file
18
examples/java/bld/.idea/libraries/bld.xml
generated
Normal file
|
@ -0,0 +1,18 @@
|
|||
<component name="libraryTable">
|
||||
<library name="bld">
|
||||
<CLASSES>
|
||||
<root url="file://$PROJECT_DIR$/lib/bld" />
|
||||
<root url="jar://$USER_HOME$/.bld/dist/bld-2.2.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="file://$PROJECT_DIR$/lib/bld" />
|
||||
<root url="jar://$USER_HOME$/.bld/dist/bld-2.2.1-sources.jar!/" />
|
||||
</SOURCES>
|
||||
<excluded>
|
||||
<root url="jar://$PROJECT_DIR$/lib/bld/bld-wrapper.jar!/" />
|
||||
</excluded>
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/bld" recursive="false" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/bld" recursive="false" type="SOURCES" />
|
||||
</library>
|
||||
</component>
|
17
examples/java/bld/.idea/libraries/compile.xml
generated
Normal file
17
examples/java/bld/.idea/libraries/compile.xml
generated
Normal file
|
@ -0,0 +1,17 @@
|
|||
<component name="libraryTable">
|
||||
<library name="compile">
|
||||
<CLASSES>
|
||||
<root url="file://$PROJECT_DIR$/lib/compile" />
|
||||
<root url="file://$PROJECT_DIR$/lib/provided" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="file://$PROJECT_DIR$/lib/compile" />
|
||||
<root url="file://$PROJECT_DIR$/lib/provided" />
|
||||
</SOURCES>
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="true" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="true" type="SOURCES" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/provided" recursive="true" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/provided" recursive="true" type="SOURCES" />
|
||||
</library>
|
||||
</component>
|
14
examples/java/bld/.idea/libraries/runtime.xml
generated
Normal file
14
examples/java/bld/.idea/libraries/runtime.xml
generated
Normal file
|
@ -0,0 +1,14 @@
|
|||
<component name="libraryTable">
|
||||
<library name="runtime">
|
||||
<CLASSES>
|
||||
<root url="file://$PROJECT_DIR$/lib/runtime" />
|
||||
<root url="file://$PROJECT_DIR$/src/main/resources" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="file://$PROJECT_DIR$/lib/runtime" />
|
||||
</SOURCES>
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="true" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="true" type="SOURCES" />
|
||||
</library>
|
||||
</component>
|
18
examples/java/bld/.idea/libraries/test.xml
generated
Normal file
18
examples/java/bld/.idea/libraries/test.xml
generated
Normal file
|
@ -0,0 +1,18 @@
|
|||
<component name="libraryTable">
|
||||
<library name="test">
|
||||
<CLASSES>
|
||||
<root url="file://$PROJECT_DIR$/lib/test" />
|
||||
<root url="file://$PROJECT_DIR$/lib/provided" />
|
||||
<root url="file://$PROJECT_DIR$/src/test/resources" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="file://$PROJECT_DIR$/lib/test" />
|
||||
<root url="file://$PROJECT_DIR$/lib/provided" />
|
||||
</SOURCES>
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="true" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="true" type="SOURCES" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/provided" recursive="true" />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib/provided" recursive="true" type="SOURCES" />
|
||||
</library>
|
||||
</component>
|
11
examples/java/bld/.idea/misc.xml
generated
Normal file
11
examples/java/bld/.idea/misc.xml
generated
Normal file
|
@ -0,0 +1,11 @@
|
|||
<project version="4">
|
||||
<component name="EntryPointsManager">
|
||||
<pattern value="com.example.ExampleBuild" method="runExample" />
|
||||
</component>
|
||||
<component name="PDMPlugin">
|
||||
<option name="skipTestSources" value="false" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="17" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/build" />
|
||||
</component>
|
||||
</project>
|
9
examples/java/bld/.idea/modules.xml
generated
Normal file
9
examples/java/bld/.idea/modules.xml
generated
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/app.iml" filepath="$PROJECT_DIR$/.idea/app.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/bld.iml" filepath="$PROJECT_DIR$/.idea/bld.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
9
examples/java/bld/.idea/runConfigurations/Run Tests.xml
generated
Normal file
9
examples/java/bld/.idea/runConfigurations/Run Tests.xml
generated
Normal file
|
@ -0,0 +1,9 @@
|
|||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="Run Tests" type="Application" factoryName="Application" nameIsGenerated="true">
|
||||
<option name="MAIN_CLASS_NAME" value="com.example.ExampleTest" />
|
||||
<module name="app" />
|
||||
<method v="2">
|
||||
<option name="Make" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
</component>
|
6
examples/java/bld/.idea/vcs.xml
generated
Normal file
6
examples/java/bld/.idea/vcs.xml
generated
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$/../../.." vcs="Git" />
|
||||
</component>
|
||||
</project>
|
11
examples/java/bld/.vscode/launch.json
vendored
Normal file
11
examples/java/bld/.vscode/launch.json
vendored
Normal file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"type": "java",
|
||||
"name": "Run Tests",
|
||||
"request": "launch",
|
||||
"mainClass": "com.example.ExampleTest"
|
||||
}
|
||||
]
|
||||
}
|
15
examples/java/bld/.vscode/settings.json
vendored
Normal file
15
examples/java/bld/.vscode/settings.json
vendored
Normal file
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"java.project.sourcePaths": [
|
||||
"src/main/java",
|
||||
"src/main/resources",
|
||||
"src/test/java",
|
||||
"src/test/resources",
|
||||
"src/bld/java",
|
||||
"src/bld/resources"
|
||||
],
|
||||
"java.configuration.updateBuildConfiguration": "automatic",
|
||||
"java.project.referencedLibraries": [
|
||||
"${HOME}/.bld/dist/bld-2.2.1.jar",
|
||||
"lib/**/*.jar"
|
||||
]
|
||||
}
|
10
examples/java/bld/README.md
Normal file
10
examples/java/bld/README.md
Normal file
|
@ -0,0 +1,10 @@
|
|||
## Examples
|
||||
|
||||
To compile & run the examples:
|
||||
|
||||
```console
|
||||
./bld compile
|
||||
|
||||
./bld run
|
||||
./bld run-example
|
||||
```
|
2
examples/java/bld/bld
Executable file
2
examples/java/bld/bld
Executable file
|
@ -0,0 +1,2 @@
|
|||
#!/usr/bin/env sh
|
||||
java -jar "$(dirname "$0")/lib/bld/bld-wrapper.jar" "$0" --build com.example.ExampleBuild "$@"
|
4
examples/java/bld/bld.bat
Normal file
4
examples/java/bld/bld.bat
Normal file
|
@ -0,0 +1,4 @@
|
|||
@echo off
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
java -jar "%DIRNAME%/lib/bld/bld-wrapper.jar" "%0" --build com.example.ExampleBuild %*
|
21
examples/java/bld/example.mustache
Normal file
21
examples/java/bld/example.mustache
Normal file
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
* This file is automatically generated.
|
||||
* Do not modify! -- ALL CHANGES WILL BE ERASED!
|
||||
*/
|
||||
|
||||
package {{packageName}};
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public final class {{className}} {
|
||||
public static final String PROJECT = "{{project}}";
|
||||
public static final Date BUILDDATE = new Date({{epoch}}L);
|
||||
public static final String VERSION = "{{version}}";
|
||||
|
||||
/**
|
||||
* Disables the default constructor.
|
||||
*/
|
||||
private {{className}}() {
|
||||
throw new UnsupportedOperationException("Illegal constructor call.");
|
||||
}
|
||||
}
|
9
examples/java/bld/example.properties
Normal file
9
examples/java/bld/example.properties
Normal file
|
@ -0,0 +1,9 @@
|
|||
#Generated by the Semver Plugin for Gradle
|
||||
#Sat Apr 27 17:04:13 PDT 2019
|
||||
example.buildmeta=T800
|
||||
example.major=8
|
||||
example.minor=4
|
||||
example.patch=97
|
||||
example.prerelease=alpha
|
||||
example.project=Java Example
|
||||
example.semver=8.4.97-alpha+T800
|
BIN
examples/java/bld/lib/bld/bld-wrapper.jar
Normal file
BIN
examples/java/bld/lib/bld/bld-wrapper.jar
Normal file
Binary file not shown.
7
examples/java/bld/lib/bld/bld-wrapper.properties
Normal file
7
examples/java/bld/lib/bld/bld-wrapper.properties
Normal file
|
@ -0,0 +1,7 @@
|
|||
bld.downloadExtensionJavadoc=false
|
||||
bld.downloadExtensionSources=true
|
||||
bld.downloadLocation=
|
||||
bld.extensions=
|
||||
bld.repositories=MAVEN_CENTRAL,RIFE2_RELEASES
|
||||
bld.sourceDirectories=
|
||||
bld.version=2.2.1
|
53
examples/java/bld/src/bld/java/com/example/ExampleBuild.java
Normal file
53
examples/java/bld/src/bld/java/com/example/ExampleBuild.java
Normal file
|
@ -0,0 +1,53 @@
|
|||
package com.example;
|
||||
|
||||
import rife.bld.BuildCommand;
|
||||
import rife.bld.Project;
|
||||
import rife.bld.operations.JavacOptions.Processing;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
||||
import static rife.bld.dependencies.Repository.*;
|
||||
import static rife.bld.dependencies.Scope.provided;
|
||||
|
||||
/**
|
||||
* Example build.
|
||||
*/
|
||||
public class ExampleBuild extends Project {
|
||||
public ExampleBuild() {
|
||||
pkg = "com.example";
|
||||
name = "Example";
|
||||
version = version(0, 1, 0);
|
||||
|
||||
mainClass = "com.example.App";
|
||||
|
||||
testOperation().mainClass("com.example.ExampleTest");
|
||||
|
||||
repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, SONATYPE_SNAPSHOTS_LEGACY);
|
||||
|
||||
scope(provided).include(dependency("net.thauvin.erik", "semver", version(1, 2, 2, "SNAPSHOT")));
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
new ExampleBuild().start(args);
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves generated source files in the {@code build/generated} directory.
|
||||
* <p>
|
||||
* To incorporate the generated source code into the source tree, add this directory as an additional source
|
||||
* location in your IDE.
|
||||
*/
|
||||
@Override
|
||||
public void compile() throws Exception {
|
||||
var generated = new File(buildDirectory(), "generated");
|
||||
var ignore = generated.mkdir();
|
||||
compileOperation().compileOptions().process(Processing.FULL).sourceOutput(generated);
|
||||
super.compile();
|
||||
}
|
||||
|
||||
@BuildCommand(value = "run-example", summary = "Runs the example")
|
||||
public void runExample() throws Exception {
|
||||
runOperation().fromProject(this).mainClass("com.example.Example").execute();
|
||||
}
|
||||
}
|
|
@ -1,12 +1,19 @@
|
|||
package com.example;
|
||||
|
||||
import net.thauvin.erik.semver.Version;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Locale;
|
||||
|
||||
@Version(properties = "version.properties")
|
||||
public class Example {
|
||||
public final class App {
|
||||
/**
|
||||
* Command line interface.
|
||||
*
|
||||
* @param args The command line parameters.
|
||||
*/
|
||||
public static void main(final String... args) {
|
||||
final SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy 'at' HH:mm:ss z");
|
||||
final var sdf = new SimpleDateFormat("EEE, d MMM yyyy 'at' HH:mm:ss z", Locale.US);
|
||||
|
||||
System.out.println("-----------------------------------------------------");
|
||||
|
21
examples/java/bld/src/main/java/com/example/Example.java
Normal file
21
examples/java/bld/src/main/java/com/example/Example.java
Normal file
|
@ -0,0 +1,21 @@
|
|||
package com.example;
|
||||
|
||||
import net.thauvin.erik.semver.Version;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Locale;
|
||||
|
||||
@Version(properties = "example.properties", template = "example.mustache", className = "ExampleVersion",
|
||||
keysPrefix = "example.")
|
||||
public class Example {
|
||||
public static void main(final String... args) {
|
||||
final var sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.US);
|
||||
|
||||
System.out.println("-- From Example -------------------------------------");
|
||||
|
||||
System.out.println(" " + ExampleVersion.PROJECT + ' ' + ExampleVersion.VERSION
|
||||
+ " (" + sdf.format(ExampleVersion.BUILDDATE) + ')');
|
||||
|
||||
System.out.println("-----------------------------------------------------");
|
||||
}
|
||||
}
|
18
examples/java/bld/src/test/java/com/example/ExampleTest.java
Normal file
18
examples/java/bld/src/test/java/com/example/ExampleTest.java
Normal file
|
@ -0,0 +1,18 @@
|
|||
package com.example;
|
||||
|
||||
public class ExampleTest {
|
||||
private static final String HELLO = "Hello!";
|
||||
|
||||
public static void main(String[] args) {
|
||||
var hello = new ExampleTest().verifyHello();
|
||||
if (HELLO.equals(hello)) {
|
||||
System.out.println("Succeeded");
|
||||
} else {
|
||||
throw new AssertionError();
|
||||
}
|
||||
}
|
||||
|
||||
String verifyHello() {
|
||||
return HELLO;
|
||||
}
|
||||
}
|
9
examples/java/bld/version.properties
Normal file
9
examples/java/bld/version.properties
Normal file
|
@ -0,0 +1,9 @@
|
|||
#Generated by the Semver Plugin for Gradle
|
||||
#Sat Apr 27 17:05:34 PDT 2019
|
||||
version.buildmeta=007
|
||||
version.major=11
|
||||
version.minor=11
|
||||
version.patch=20
|
||||
version.prerelease=beta
|
||||
version.project=Java App
|
||||
version.semver=11.11.20-beta+007
|
|
@ -1,25 +0,0 @@
|
|||
apply plugin: 'java'
|
||||
apply plugin: 'application'
|
||||
|
||||
// ./gradlew
|
||||
|
||||
defaultTasks 'run'
|
||||
|
||||
def semverProcessor = 'net.thauvin.erik:semver:1.1.0-beta'
|
||||
|
||||
sourceCompatibility = 1.8
|
||||
targetCompatibility = 1.8
|
||||
|
||||
compileJava.options.annotationProcessorGeneratedSourcesDirectory = file("${projectDir}/src/generated/java")
|
||||
|
||||
mainClassName = 'com.example.Example'
|
||||
|
||||
repositories {
|
||||
mavenLocal()
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
annotationProcessor semverProcessor
|
||||
compileOnly semverProcessor
|
||||
}
|
2
examples/java/gradle/.editorconfig
Normal file
2
examples/java/gradle/.editorconfig
Normal file
|
@ -0,0 +1,2 @@
|
|||
[*]
|
||||
insert_final_newline = true
|
82
examples/java/gradle/.gitignore
vendored
Normal file
82
examples/java/gradle/.gitignore
vendored
Normal file
|
@ -0,0 +1,82 @@
|
|||
!.vscode/extensions.json
|
||||
!.vscode/launch.json
|
||||
!.vscode/settings.json
|
||||
!.vscode/tasks.json
|
||||
!gradle-wrapper.jar
|
||||
.classpath
|
||||
.DS_Store
|
||||
.gradle
|
||||
.history
|
||||
.idea_modules/
|
||||
.idea/**/contentModel.xml
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dbnavigator.xml
|
||||
.idea/**/dictionaries
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
.idea/**/mongoSettings.xml
|
||||
.idea/**/shelf
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
.idea/**/usage.statistics.xml
|
||||
.idea/**/workspace.xml
|
||||
.idea/caches/build_file_checksums.ser
|
||||
.idea/httpRequests
|
||||
.idea/replstate.xml
|
||||
.kobalt
|
||||
.mtj.tmp/
|
||||
.mvn/timing.properties
|
||||
.mvn/wrapper/maven-wrapper.jar
|
||||
.nb-gradle
|
||||
.project
|
||||
.scannerwork
|
||||
.settings
|
||||
.vscode/*
|
||||
*.class
|
||||
*.code-workspace
|
||||
*.ctxt
|
||||
*.ear
|
||||
*.iws
|
||||
*.jar
|
||||
*.log
|
||||
*.nar
|
||||
*.rar
|
||||
*.sublime-*
|
||||
*.tar.gz
|
||||
*.war
|
||||
*.zip
|
||||
atlassian-ide-plugin.xml
|
||||
bin/
|
||||
build/
|
||||
cmake-build-*/
|
||||
com_crashlytics_export_strings.xml
|
||||
crashlytics-build.properties
|
||||
crashlytics.properties
|
||||
dependency-reduced-pom.xml
|
||||
deploy/
|
||||
dist/
|
||||
ehthumbs.db
|
||||
fabric.properties
|
||||
gen/
|
||||
gradle.properties
|
||||
hs_err_pid*
|
||||
kobaltBuild
|
||||
kobaltw*-test
|
||||
lib/kotlin*
|
||||
libs/
|
||||
local.properties
|
||||
out/
|
||||
pom.xml.next
|
||||
pom.xml.releaseBackup
|
||||
pom.xml.tag
|
||||
pom.xml.versionsBackup
|
||||
proguard-project.txt
|
||||
project.properties
|
||||
release.properties
|
||||
target/
|
||||
test-output
|
||||
Thumbs.db
|
1
examples/java/gradle/.idea/.name
generated
Normal file
1
examples/java/gradle/.idea/.name
generated
Normal file
|
@ -0,0 +1 @@
|
|||
semver-examples-java-gradle
|
20
examples/java/gradle/.idea/compiler.xml
generated
Normal file
20
examples/java/gradle/.idea/compiler.xml
generated
Normal file
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<annotationProcessing>
|
||||
<profile name="Gradle Imported" enabled="true">
|
||||
<outputRelativeToContentRoot value="true" />
|
||||
<option name="semver.project.dir" value="$PROJECT_DIR$" />
|
||||
<processorPath useClasspath="false">
|
||||
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.thauvin.erik/semver/1.2.2-SNAPSHOT/31d53f3e9fdd226343234d13a080d6fd12b58ae6/semver-1.2.2-SNAPSHOT.jar" />
|
||||
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.spullara.mustache.java/compiler/0.9.13/60666500a7dce7a5d3e17c09b46ea6f037192bd5/compiler-0.9.13.jar" />
|
||||
</processorPath>
|
||||
<module name="examples-java.main" />
|
||||
</profile>
|
||||
</annotationProcessing>
|
||||
<bytecodeTargetLevel target="17">
|
||||
<module name="examples-java_main" target="1.8" />
|
||||
<module name="examples-java_test" target="1.8" />
|
||||
</bytecodeTargetLevel>
|
||||
</component>
|
||||
</project>
|
9
examples/java/gradle/.idea/gradle.iml
generated
Normal file
9
examples/java/gradle/.idea/gradle.iml
generated
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue