mvnizer 0.9.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ca7aeee12c4cb98cc252e586c01ae21e5327e01037f36cc9d7ea4d37e9cea8fc
4
- data.tar.gz: 61e5399be51a6db60e3fcde62430f36dd790d3897e04b5e28c24d82a9a4d025f
3
+ metadata.gz: 6bf5efb3ab3b0675e036cb927b33c0fedc65b525784b59c4d35aec74bb5f0b27
4
+ data.tar.gz: 0e35fceb9db2f91e1f8cf051653e98f24d6c5449dc2eb839098a63b24f2053b0
5
5
  SHA512:
6
- metadata.gz: 6ee3e78ea36603a4df8b9319979ae21174339b142e7b093e9aa0124c3c486102ce0b55911f20719c2260be8317a01b88a2920447abaf5eab12c5aeb745ca3f9d
7
- data.tar.gz: 1cdd3c51112360fa974debc38e42a9570777302df7d84a396189fd95d6488c0f2352f125caa9c192ccd4eab0973e906eaf79317a7384695c08d283d804d6b1cc
6
+ metadata.gz: 22b459abf1bf9abe8d76a21837da8d7a8c87a93d0bf95aea63277289f82f82d57e5c369d7df1d2f5f9655244e5bd9914ecf66b9f8a54bd29de5a92a58e85faee
7
+ data.tar.gz: 0b6ad9ed09c7d90c8447a8608f56a5dadf24d9909377eb5da8347ef4bee4ec81256b38f4fa96e18a934745d52d359c2a33222899d0b1f5de020c3267cd9d1a9d
data/.gitignore ADDED
@@ -0,0 +1,52 @@
1
+ # rcov generated
2
+ coverage
3
+ coverage.data
4
+
5
+ # rdoc generated
6
+ rdoc
7
+
8
+ # yard generated
9
+ doc
10
+ .yardoc
11
+
12
+ # bundler
13
+ .bundle
14
+
15
+ # jeweler generated
16
+ pkg
17
+
18
+ # aruba test folder
19
+ tmp
20
+
21
+ # Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore:
22
+ #
23
+ # * Create a file at ~/.gitignore
24
+ # * Include files you want ignored
25
+ # * Run: git config --global core.excludesfile ~/.gitignore
26
+ #
27
+ # After doing this, these files will be ignored in all your git projects,
28
+ # saving you from having to 'pollute' every project you touch with them
29
+ #
30
+ # Not sure what to needs to be ignored for particular editors/OSes? Here's some ideas to get you started. (Remember, remove the leading # of the line)
31
+ #
32
+ # For MacOS:
33
+ #
34
+ #.DS_Store
35
+
36
+ # For TextMate
37
+ #*.tmproj
38
+ #tmtags
39
+
40
+ # For emacs:
41
+ *~
42
+ \#*
43
+ .\#*
44
+
45
+ # For vim:
46
+ #*.swp
47
+
48
+ # For redcar:
49
+ #.redcar
50
+
51
+ # For rubinius:
52
+ #*.rbc
data/.travis.yml CHANGED
@@ -2,6 +2,5 @@ language: ruby
2
2
  before_install:
3
3
  - gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)"
4
4
  rvm:
5
- - "2.3.8"
6
- - "2.4.9"
7
- - "2.6.5"
5
+ - "2.7.0"
6
+ - "3.0.0"
data/CHANGELOG.org CHANGED
@@ -1,3 +1,32 @@
1
+ * Mvnizer 1.2.0
2
+
3
+ - Add =--docker= option to generate =Dockerfile=
4
+ - Add =--logger= option to add logging dependencies to the project
5
+ - Add =--main=[Main class name]= option to generate main class, and set up =maven-shade-plugin= automatically.
6
+ - Fix bug with patch component of version not supporting multiple digits.
7
+
8
+ * Mvnizer 1.1.0
9
+
10
+ - Update nokogiri dependency to 1.12
11
+
12
+ * Mvnizer 1.0.0
13
+
14
+ - Release of major version!
15
+
16
+ * Mvnizer 0.11.0
17
+
18
+ - Update mvnizer to be used with ruby 2.7.0
19
+ - Remove dependency on jeweler
20
+
21
+ * Mvnizer 0.10.0
22
+
23
+ - Update default junit version to 5.7.0
24
+ - Update maven compiler plugin to 3.8.1
25
+
26
+ * Mvnizer 0.9.0
27
+
28
+ - Update rack dependency version.
29
+
1
30
  * Mvnizer 0.8.0
2
31
 
3
32
  - Update dependencies version.
@@ -10,6 +39,8 @@
10
39
 
11
40
  - Maven plugins support,
12
41
  - Update dependencies version.
42
+ - Add support for Maven plugins
43
+ - Set ruby 2.3.0 as minimum version
13
44
 
14
45
  * Mvnizer 0.5.0
15
46
 
data/Dockerfile CHANGED
@@ -10,8 +10,10 @@ RUN apt-get update -q && \
10
10
  apt-get install -qy git vim rvm --no-install-recommends && \
11
11
  apt-get clean
12
12
 
13
- RUN /bin/bash -l -c "rvm autolibs packages && rvm install 2.3.8"
14
- RUN /bin/bash -l -c "gem update --system && gem install bundler"
13
+ RUN /bin/bash -l -c "rvm autolibs packages && rvm install 2.7.0 && rvm use 2.7.0"
14
+ RUN /bin/bash -l -c "gem update -f --no-document --system && gem install bundler"
15
+
16
+ WORKDIR /mvnizer
15
17
 
16
18
  # To run:
17
19
  # docker run -t -i -v $(pwd):/mvnizer mvnizer-build:latest /bin/bash
data/Gemfile CHANGED
@@ -1,18 +1,15 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- ruby "> 2.3.0"
3
+ ruby ">= 2.7.0"
4
4
 
5
- gem 'httparty', '~> 0.16'
6
- gem 'nokogiri', '~> 1.10'
7
-
8
- # Ensure Rake remains under v. 11 to avoid issues with
9
- # removed `last_comment` in rspec.
10
- gem 'rake', '< 11.0'
5
+ gem 'httparty', '~> 0.17'
6
+ gem 'nokogiri', '~> 1.12'
7
+ gem 'rake', '~> 13.0'
8
+ gem 'rake-release'
11
9
 
12
10
  group :development do
13
- gem 'rspec', '~> 2.99'
14
- gem 'rspec-mocks', '~> 2.99'
11
+ gem 'rspec', '~> 3.10.0'
12
+ gem 'rspec-mocks', '~> 3.10.0'
15
13
  gem 'fakefs', '~> 0.14'
16
- gem 'jeweler', '~> 2.3'
17
- gem 'aruba', '~> 0.14'
14
+ # gem 'aruba', '~> 0.14'
18
15
  end
data/Gemfile.lock CHANGED
@@ -1,119 +1,55 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
- addressable (2.4.0)
5
- aruba (0.14.6)
6
- childprocess (>= 0.6.3, < 0.10.0)
7
- contracts (~> 0.9)
8
- cucumber (>= 1.3.19)
9
- ffi (~> 1.9.10)
10
- rspec-expectations (>= 2.99)
11
- thor (~> 0.19)
12
- backports (3.11.4)
13
- builder (3.2.3)
14
- childprocess (0.9.0)
15
- ffi (~> 1.0, >= 1.0.11)
16
- contracts (0.16.0)
17
- cucumber (3.1.2)
18
- builder (>= 2.1.2)
19
- cucumber-core (~> 3.2.0)
20
- cucumber-expressions (~> 6.0.1)
21
- cucumber-wire (~> 0.0.1)
22
- diff-lcs (~> 1.3)
23
- gherkin (~> 5.1.0)
24
- multi_json (>= 1.7.5, < 2.0)
25
- multi_test (>= 0.1.2)
26
- cucumber-core (3.2.1)
27
- backports (>= 3.8.0)
28
- cucumber-tag_expressions (~> 1.1.0)
29
- gherkin (~> 5.0)
30
- cucumber-expressions (6.0.1)
31
- cucumber-tag_expressions (1.1.1)
32
- cucumber-wire (0.0.1)
33
- descendants_tracker (0.0.4)
34
- thread_safe (~> 0.3, >= 0.3.1)
35
- diff-lcs (1.3)
36
- fakefs (0.14.3)
37
- faraday (0.9.2)
38
- multipart-post (>= 1.2, < 3)
39
- ffi (1.9.25)
40
- ffi (1.9.25-java)
41
- gherkin (5.1.0)
42
- git (1.5.0)
43
- github_api (0.16.0)
44
- addressable (~> 2.4.0)
45
- descendants_tracker (~> 0.0.4)
46
- faraday (~> 0.8, < 0.10)
47
- hashie (>= 3.4)
48
- mime-types (>= 1.16, < 3.0)
49
- oauth2 (~> 1.0)
50
- hashie (3.6.0)
51
- highline (2.0.0)
52
- httparty (0.16.2)
4
+ diff-lcs (1.4.4)
5
+ fakefs (0.20.1)
6
+ httparty (0.18.1)
7
+ mime-types (~> 3.0)
53
8
  multi_xml (>= 0.5.2)
54
- jar-dependencies (0.4.0)
55
- jeweler (2.3.9)
56
- builder
57
- bundler
58
- git (>= 1.2.5)
59
- github_api (~> 0.16.0)
60
- highline (>= 1.6.15)
61
- nokogiri (>= 1.5.10)
62
- psych
63
- rake
64
- rdoc
65
- semver2
66
- jwt (2.1.0)
67
- mime-types (2.99.3)
68
- mini_portile2 (2.4.0)
69
- multi_json (1.13.1)
70
- multi_test (0.1.2)
9
+ mime-types (3.3.1)
10
+ mime-types-data (~> 3.2015)
11
+ mime-types-data (3.2021.0225)
12
+ mini_portile2 (2.6.1)
71
13
  multi_xml (0.6.0)
72
- multipart-post (2.0.0)
73
- nokogiri (1.10.8)
74
- mini_portile2 (~> 2.4.0)
75
- nokogiri (1.10.8-java)
76
- oauth2 (1.4.1)
77
- faraday (>= 0.8, < 0.16.0)
78
- jwt (>= 1.0, < 3.0)
79
- multi_json (~> 1.3)
80
- multi_xml (~> 0.5)
81
- rack (>= 1.2, < 3)
82
- psych (3.0.2)
83
- psych (3.0.2-java)
84
- jar-dependencies (>= 0.1.7)
85
- rack (2.2.3)
86
- rake (10.5.0)
87
- rdoc (6.0.4)
88
- rspec (2.99.0)
89
- rspec-core (~> 2.99.0)
90
- rspec-expectations (~> 2.99.0)
91
- rspec-mocks (~> 2.99.0)
92
- rspec-core (2.99.2)
93
- rspec-expectations (2.99.2)
94
- diff-lcs (>= 1.1.3, < 2.0)
95
- rspec-mocks (2.99.4)
96
- semver2 (3.4.2)
97
- thor (0.20.0)
98
- thread_safe (0.3.6)
99
- thread_safe (0.3.6-java)
14
+ nokogiri (1.12.5)
15
+ mini_portile2 (~> 2.6.1)
16
+ racc (~> 1.4)
17
+ nokogiri (1.12.5-java)
18
+ racc (~> 1.4)
19
+ racc (1.5.2)
20
+ racc (1.5.2-java)
21
+ rake (13.0.3)
22
+ rake-release (1.3.0)
23
+ bundler (>= 1.11, < 3)
24
+ rspec (3.10.0)
25
+ rspec-core (~> 3.10.0)
26
+ rspec-expectations (~> 3.10.0)
27
+ rspec-mocks (~> 3.10.0)
28
+ rspec-core (3.10.1)
29
+ rspec-support (~> 3.10.0)
30
+ rspec-expectations (3.10.1)
31
+ diff-lcs (>= 1.2.0, < 2.0)
32
+ rspec-support (~> 3.10.0)
33
+ rspec-mocks (3.10.2)
34
+ diff-lcs (>= 1.2.0, < 2.0)
35
+ rspec-support (~> 3.10.0)
36
+ rspec-support (3.10.2)
100
37
 
101
38
  PLATFORMS
102
39
  java
103
40
  ruby
104
41
 
105
42
  DEPENDENCIES
106
- aruba (~> 0.14)
107
43
  fakefs (~> 0.14)
108
- httparty (~> 0.16)
109
- jeweler (~> 2.3)
110
- nokogiri (~> 1.10)
111
- rake (< 11.0)
112
- rspec (~> 2.99)
113
- rspec-mocks (~> 2.99)
44
+ httparty (~> 0.17)
45
+ nokogiri (~> 1.12)
46
+ rake (~> 13.0)
47
+ rake-release
48
+ rspec (~> 3.10.0)
49
+ rspec-mocks (~> 3.10.0)
114
50
 
115
51
  RUBY VERSION
116
- ruby 2.3.8p459
52
+ ruby 2.7.0p0
117
53
 
118
54
  BUNDLED WITH
119
55
  2.1.4
data/README.org CHANGED
@@ -1,5 +1,4 @@
1
- Bootstraps a Maven project. Because archetypes shouldn't be so
2
- complicated.
1
+ Bootstraps a Maven project. Because archetypes shouldn't be so complicated.
3
2
 
4
3
  [[https://travis-ci.org/tychobrailleur/mvnizer][https://travis-ci.org/tychobrailleur/mvnizer.svg?branch=master]]
5
4
  [[https://badge.fury.io/rb/mvnizer][https://badge.fury.io/rb/mvnizer.svg]]
@@ -7,8 +6,7 @@ complicated.
7
6
 
8
7
  * Introduction
9
8
 
10
- Mvnizer is ideal to create a throwaway Maven project that adds
11
- junit as a dependency and sets up the Maven project structure.
9
+ Mvnizer is ideal to create a throwaway Maven project that adds junit as a dependency and sets up the Maven project structure.
12
10
 
13
11
  * Install
14
12
 
@@ -34,27 +32,38 @@ complicated.
34
32
  <group:>artifact<:version><:type>
35
33
  #+END_EXAMPLE
36
34
 
37
- with the values between angled brackets optional. =type= can only
38
- have one of the following three values: =jar= (default), =war= or
39
- =pom=. This command creates a project in the =artifact= folder,
40
- populating the proper values in the pom file.
35
+ with the values between angled brackets optional. =type= can only have one of the following three values: =jar= (default), =war= or =pom=. This command creates a project in the =artifact= folder, populating the proper values in the pom file.
41
36
 
42
37
  Here are some examples of valid commands:
43
38
 
44
39
  #+BEGIN_EXAMPLE
45
40
  mvnizer new foo
46
41
  mvnizer new foo:war
47
- mvnizer new foo:1.0:war
42
+ mvnizer new foo:1.0.0:war
48
43
  mvnizer new com.example:foo
49
44
  mvnizer new com.example:foo:war
50
- mvnizer new com.example:foo:1.0:war
45
+ mvnizer new com.example:foo:1.0.0:war
51
46
  #+END_EXAMPLE
52
47
 
48
+ The version *must* be of the form =major.minor.patch-classifier=.
49
+
50
+ *** Options
51
+
52
+ The following options can be used to add specific files to the project:
53
+
54
+ - =--docker= :: this creates a =Dockerfile= based on the Java 11 distroless base image. It assumes that the jar generated by the build can be executed using the =java -jar= command;
55
+ - =--main=[Main class name] :: this creates a class with a =main= method that can be executed using the =java -jar= command. It also adds the =maven-shade-plugin= to the pom, with this class as the main class.
56
+ - =--logger= :: this adds logging dependencies to the project. The jar added are defined as the =logging_deps= of the configuration file. The default are:
57
+
58
+ #+begin_src
59
+ logging_deps: [ "org.slf4j:slf4j-api:1.7.32:jar",
60
+ "org.slf4j:slf4j-simple:1.7.32:jar",
61
+ "ch.qos.logback:logback-core:1.2.6:jar" ]
62
+ #+end_src
63
+
53
64
  *** WAR Project
54
65
 
55
- If the type of project generated is =war=, a servlet
56
- (=ExampleServlet=) is generated, along with a JSP file and an
57
- empty =web.xml= file.
66
+ If the type of project generated is =war=, a servlet (=ExampleServlet=) is generated, along with a JSP file and an empty =web.xml= file.
58
67
 
59
68
  When running the Jetty plugin, /e.g./:
60
69
 
@@ -62,28 +71,24 @@ Here are some examples of valid commands:
62
71
  mvn org.eclipse.jetty:jetty-maven-plugin:9.4.12.v20180830:run-war
63
72
  #+END_EXAMPLE
64
73
 
65
- the example can then be accessed at http://localhost:8080/hello
74
+ The example can then be accessed at http://localhost:8080/hello
66
75
 
67
76
  ** Add Dependency
68
77
 
69
- To add dependencies, you must be in the folder where the pom file you
70
- want to add the dependency to is.
78
+ To add dependencies, you must be in the folder where the pom file you want to add the dependency to is.
71
79
 
72
- To add a dependency, simply pass the coordinates of the dependency, and
73
- add scope if needed (if no scope is given, =compile= is assumed):
80
+ To add a dependency, simply pass the coordinates of the dependency, and add scope if needed (if no scope is given, =compile= is assumed):
74
81
 
75
82
  #+BEGIN_EXAMPLE
76
83
  mvnizer add org.apache.commons:commons-lang3:3.1:jar
77
84
  mvnizer add org.mockito:mockito-core:1.9.5-rc1:jar:test
78
85
  #+END_EXAMPLE
79
86
 
80
- The =search= features makes it easy to find the coordinates of the
81
- dependencies for you.
87
+ The =search= features makes it easy to find the coordinates of the dependencies for you.
82
88
 
83
89
  ** Dependency Search
84
90
 
85
- You can search for dependencies in the Maven central repository with the
86
- command:
91
+ You can search for dependencies in the Maven central repository with the command:
87
92
 
88
93
  #+BEGIN_EXAMPLE
89
94
  $ mvnizer search <text>
@@ -91,6 +96,6 @@ command:
91
96
 
92
97
  * License
93
98
 
94
- MIT License.
99
+ MIT License.
95
100
 
96
- © Copyright 2012–2020 -- Sébastien Le Callonnec
101
+ © Copyright 2012–2021 Sébastien Le Callonnec
data/Rakefile CHANGED
@@ -1,7 +1,8 @@
1
- # encoding: utf-8
2
-
1
+ # coding: utf-8
3
2
  require 'rubygems'
4
3
  require 'bundler'
4
+ require 'rake/release'
5
+
5
6
  begin
6
7
  Bundler.setup(:default, :development)
7
8
  rescue Bundler::BundlerError => e
@@ -11,25 +12,6 @@ rescue Bundler::BundlerError => e
11
12
  end
12
13
  require 'rake'
13
14
 
14
- require 'jeweler'
15
- require './lib/mvnizer/version.rb'
16
- Jeweler::Tasks.new do |gem|
17
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
18
- gem.name = "mvnizer"
19
- gem.version = Mvnizer::Version::STRING
20
- gem.homepage = "http://github.com/tychobrailleur/mvnizer"
21
- gem.license = "MIT"
22
- gem.summary = %Q{Bootstrap a Maven project without the pain of archetypes.}
23
- gem.description = %Q{Bootstrap a Maven project without the pain of archetypes.}
24
- gem.email = "sebastien@weblogism.com"
25
- gem.authors = ["Sébastien Le Callonnec"]
26
-
27
- gem.executables = ['mvnizer']
28
- # dependencies defined in Gemfile
29
- end
30
- Jeweler::RubygemsDotOrgTasks.new
31
-
32
- require 'rspec/core'
33
15
  require 'rspec/core/rake_task'
34
16
  RSpec::Core::RakeTask.new(:spec) do |spec|
35
17
  spec.pattern = FileList['spec/**/*_spec.rb']
@@ -47,9 +29,7 @@ Rake::RDocTask.new do |rdoc|
47
29
  version = File.exist?('VERSION') ? File.read('VERSION') : ""
48
30
 
49
31
  rdoc.rdoc_dir = 'rdoc'
50
- rdoc.title = "helloworld #{version}"
32
+ rdoc.title = "mvnizer #{version}"
51
33
  rdoc.rdoc_files.include('README*')
52
34
  rdoc.rdoc_files.include('lib/**/*.rb')
53
35
  end
54
-
55
- # -*- coding: utf-8 -*-
data/bin/mvnizer CHANGED
@@ -26,7 +26,7 @@ HELP
26
26
 
27
27
  options = {}
28
28
 
29
- opts = OptionParser.new do |opts|
29
+ opt_parser = OptionParser.new do |opts|
30
30
  opts.banner = help
31
31
 
32
32
  opts.on_tail("-h", "--help", "Show this message") do
@@ -38,10 +38,22 @@ opts = OptionParser.new do |opts|
38
38
  puts "Mvnizer " + Mvnizer::Version::STRING
39
39
  exit 0
40
40
  end
41
+
42
+ opts.on("--docker", "Create Dockerfile. Ignored if not `new' command.") do
43
+ options[:docker] = true
44
+ end
45
+
46
+ opts.on("--main [MAIN_CLASS]", "Create a main class with name MAIN_CLASS.") do |main|
47
+ options[:main] = main
48
+ end
49
+
50
+ opts.on("--logger", "Add logging dependencies. Ignored if not `new' command.") do
51
+ options[:logger] = true
52
+ end
41
53
  end
42
54
 
43
55
  # Read command line options into `options` hash
44
- opts.parse!
56
+ opt_parser.parse!
45
57
 
46
58
  if ARGV.size == 2
47
59
  options[:command] = ARGV[0]
data/conf/default.yml CHANGED
@@ -1,5 +1,8 @@
1
1
  group_id: com.example
2
2
  version: 0.0.1-SNAPSHOT
3
3
  type: jar
4
- dependencies: [ "junit:junit:4.12:jar:test" ]
5
- plugins: [ ":maven-compiler-plugin:3.8.0" ]
4
+ dependencies: [ "org.junit.jupiter:junit-jupiter-engine:5.7.0:jar:test" ]
5
+ plugins: [ ":maven-compiler-plugin:3.8.1" ]
6
+ logging_deps: [ "org.slf4j:slf4j-api:1.7.32:jar",
7
+ "org.slf4j:slf4j-simple:1.7.32:jar",
8
+ "ch.qos.logback:logback-core:1.2.6:jar" ]
@@ -24,6 +24,19 @@ module Mvnizer
24
24
  "#{project.artifact_id}/.editorconfig",
25
25
  project)
26
26
 
27
+ if project.main
28
+ target_directory = project.package_name.gsub(/\./, File::SEPARATOR)
29
+ generate_file(File.join(TEMPLATE_DIR, "Main.java.erb"),
30
+ "#{project.artifact_id}/src/main/java/#{target_directory}/#{project.main}.java",
31
+ project)
32
+ end
33
+
34
+ if project.docker
35
+ generate_file(File.join(TEMPLATE_DIR, "Dockerfile.erb"),
36
+ "#{project.artifact_id}/Dockerfile",
37
+ project)
38
+ end
39
+
27
40
  end
28
41
 
29
42
  # Returns the list of dependencies to be added for this type of project.
@@ -1,13 +1,13 @@
1
- module Mvnizer
1
+ module Mvnizer
2
2
  class CoordinateParser
3
3
  # Parse the coordinates of an artifact.
4
4
  def parse(coordinates)
5
5
  p = nil
6
6
  # When no group and type is given
7
- if coordinates =~ /\A([a-zA-Z][\w\.\-]+)(:(\d+\.\d+\.\d(\-\w+)?))?:(war|jar|pom)/
7
+ if coordinates =~ /\A([a-zA-Z][\w\.\-]+)(:(\d+\.\d+\.\d+(\-\w+)?))?:(war|jar|pom)/
8
8
  p = Project.new(nil, $1, $3, $5)
9
9
  else
10
- coordinates.scan(/(([a-zA-Z][\w\.\-]+):)?([a-zA-Z][\w\.\-]+)(:(\d+\.\d+\.\d(\-\w+)?))?(:(war|jar|pom))?/) do
10
+ coordinates.scan(/(([a-zA-Z][\w\.\-]+):)?([a-zA-Z][\w\.\-]+)(:(\d+\.\d+\.\d+(\-\w+)?))?(:(war|jar|pom))?/) do
11
11
  |i,g,a,v0,v,m,t0,t|
12
12
  p = Project.new(g, a, v, t)
13
13
  end
@@ -20,7 +20,7 @@ module Mvnizer
20
20
  # the scope (test, compile, provided, runtime, system or import)
21
21
  def parse_scoped_coordinates(coordinates)
22
22
  p = nil
23
- if coordinates =~ /\A(([a-zA-Z][\w\.\-]+):)?([a-zA-Z][\w\.\-]+)(:(\d+\.\d+(\.\d)?(\-\w+)?))?:(war|jar|pom):?(test|compile|provided|runtime|system|import)?/
23
+ if coordinates =~ /\A(([a-zA-Z][\w\.\-]+):)?([a-zA-Z][\w\.\-]+)(:(\d+\.\d+(\.\d+)?(\-\w+)?))?:(war|jar|pom):?(test|compile|provided|runtime|system|import)?/
24
24
  p = Project.new($2, $3, $5, $8, [], $9)
25
25
  end
26
26
  p
@@ -17,19 +17,19 @@ module Mvnizer
17
17
  # passed in +options+.
18
18
  # If the command does not exit, throw an error.
19
19
  def run(options)
20
- raise ArgumentError, "Please give a name to the project." unless options[:name]
20
+ raise ArgumentError, 'Please give a name to the project.' unless options[:name]
21
21
 
22
22
  case options[:command]
23
- when "new"
23
+ when 'new'
24
24
  project_details = define_project(options)
25
- project_command = Mvnizer::Command::ProjectFactory.create(project_details.type)
26
25
 
26
+ project_command = Mvnizer::Command::ProjectFactory.create(project_details.type)
27
27
  project_command.run(project_details)
28
28
  out.puts("Project #{project_details.artifact_id} created successfully.")
29
- when "search"
29
+ when 'search'
30
30
  search_command = Command::SearchArtefact.new
31
31
  search_command.run(options)
32
- when "add"
32
+ when 'add'
33
33
  add_command = Command::AddDependency.new
34
34
  add_command.run(options)
35
35
  else
@@ -51,20 +51,27 @@ module Mvnizer
51
51
  return_project = Project.new(project.group_id || options[:group_id],
52
52
  project.artifact_id,
53
53
  project.version || options[:version],
54
- project.type || options[:type])
54
+ project.type || options[:type],
55
+ [], nil, [],
56
+ options[:main],
57
+ options[:docker] || false)
55
58
 
56
59
 
57
60
  # Get default dependencies, and add them after having parsed their coords.
58
61
  dependencies = options[:dependencies]
59
- dependencies.each do |d|
62
+ dependencies&.each do |d|
60
63
  return_project.add_dependency(@coordinate_parser.parse_scoped_coordinates(d))
61
- end if dependencies
64
+ end
62
65
 
66
+ # If logger is true, add logging dependencies.
67
+ options[:logging_deps]&.each do |d|
68
+ return_project.add_dependency(@coordinate_parser.parse_scoped_coordinates(d))
69
+ end
63
70
 
64
71
  plugins = options[:plugins]
65
- plugins.each do |p|
72
+ plugins&.each do |p|
66
73
  return_project.add_plugin(@coordinate_parser.parse_scoped_coordinates(p))
67
- end if plugins
74
+ end
68
75
 
69
76
  return_project
70
77
  end
@@ -3,9 +3,10 @@ module Mvnizer
3
3
  # The elements of the coordinates are read-only.
4
4
  class Project
5
5
  include Erbicole
6
- attr_reader :group_id, :artifact_id, :version, :type, :dependencies, :scope, :plugins
6
+ attr_reader :group_id, :artifact_id, :version, :type, :dependencies, :scope, :plugins, :main, :docker
7
7
 
8
- def initialize(group_id, artifact_id, version, type, dependencies = [], scope = nil, plugins = [])
8
+ def initialize(group_id, artifact_id, version, type, dependencies = [],
9
+ scope = nil, plugins = [], main = nil, docker = false)
9
10
  @group_id = group_id
10
11
  @artifact_id = artifact_id
11
12
  @version = version
@@ -13,6 +14,8 @@ module Mvnizer
13
14
  @dependencies = dependencies
14
15
  @scope = scope
15
16
  @plugins = plugins
17
+ @main = main
18
+ @docker = docker
16
19
  end
17
20
 
18
21
  def add_dependency(dependency)
@@ -25,11 +28,11 @@ module Mvnizer
25
28
 
26
29
  # Check whether the project coordinates of this project
27
30
  # match the ones of the other project.
28
- def ==(project)
29
- (group_id == project.group_id \
30
- && artifact_id == project.artifact_id \
31
- && version == project.version \
32
- && type == project.type)
31
+ def ==(other)
32
+ (group_id == other.group_id \
33
+ && artifact_id == other.artifact_id \
34
+ && version == other.version \
35
+ && type == other.type)
33
36
  end
34
37
 
35
38
  def package_name
@@ -0,0 +1,7 @@
1
+ FROM gcr.io/distroless/java-debian11:11
2
+ ARG JAR_FILE=<%= artifact_id %>-<%= version %>.<%= type %>
3
+
4
+ COPY --chown=nonroot:nonroot ./target/${JAR_FILE} /app/<%= artifact_id %>.<%= type %>
5
+ WORKDIR /app
6
+
7
+ CMD ["/app/<%= artifact_id %>.<%= type %>"]