sinicum-runner 0.5.0.pre2
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 +7 -0
- data/.gitignore +21 -0
- data/Gemfile +4 -0
- data/LICENSE +29 -0
- data/README.md +17 -0
- data/Rakefile +1 -0
- data/bin/sinicum-runner +6 -0
- data/lib/java/lib/ecj-P20140317-1600.jar +0 -0
- data/lib/java/lib/hamcrest-core-1.3.jar +0 -0
- data/lib/java/lib/jcommander-1.30.jar +0 -0
- data/lib/java/lib/tomcat-annotations-api-7.0.53.jar +0 -0
- data/lib/java/lib/tomcat-api-7.0.53.jar +0 -0
- data/lib/java/lib/tomcat-catalina-7.0.53.jar +0 -0
- data/lib/java/lib/tomcat-el-api-7.0.53.jar +0 -0
- data/lib/java/lib/tomcat-embed-core-7.0.53.jar +0 -0
- data/lib/java/lib/tomcat-jasper-7.0.53.jar +0 -0
- data/lib/java/lib/tomcat-jasper-el-7.0.53.jar +0 -0
- data/lib/java/lib/tomcat-jsp-api-7.0.53.jar +0 -0
- data/lib/java/lib/tomcat-juli-7.0.53.jar +0 -0
- data/lib/java/lib/tomcat-servlet-api-7.0.53.jar +0 -0
- data/lib/java/lib/tomcat-util-7.0.53.jar +0 -0
- data/lib/java/sinicum-runner-0.5.0.jar +0 -0
- data/lib/java/sinicum-runner-0.5.0.pre1.jar +0 -0
- data/lib/sinicum-runner/runner_cli.rb +202 -0
- data/lib/sinicum-runner/version.rb +5 -0
- data/lib/sinicum-runner.rb +7 -0
- data/pom.xml +129 -0
- data/sinicum-runner.gemspec +20 -0
- data/spec/sinicum-runner/runner_cli_spec.rb +62 -0
- data/src/main/java/com/dievision/sinicum/runner/Configuration.java +50 -0
- data/src/main/java/com/dievision/sinicum/runner/Main.java +48 -0
- data/src/test/java/com/dievision/sinicum/runner/ConfigurationTest.java +83 -0
- metadata +79 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 20cfedf5952b2f5c27b67531d06a59f509dea9b8
|
4
|
+
data.tar.gz: 34c9bdbb630e96fea95454f1478d49e32ea324fa
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 91c3822b92f2eaa865fa3e7e8bc5171bff9ec23b4a562e63823d4471372395ef52a398d720c58811e9ed23f3c98d252d52c3ffd2d7a637cf717f8674fea8a04f
|
7
|
+
data.tar.gz: c59a573de5dfecea97b234385f05c49bd98e1fb76b917912bfbc75fe99f634fb0f41c23ba634a78184ec43de0fb192a06b888a759680ea586516adb1ddba24f8
|
data/.gitignore
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
Gemfile.lock
|
7
|
+
InstalledFiles
|
8
|
+
_yardoc
|
9
|
+
coverage
|
10
|
+
doc/
|
11
|
+
lib/bundler/man
|
12
|
+
pkg
|
13
|
+
rdoc
|
14
|
+
spec/reports
|
15
|
+
test/tmp
|
16
|
+
test/version_tmp
|
17
|
+
tmp
|
18
|
+
|
19
|
+
# Maven
|
20
|
+
/target
|
21
|
+
/dependency-reduced-pom.xml
|
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
== Sinicum-Runner
|
2
|
+
|
3
|
+
The MIT License
|
4
|
+
|
5
|
+
Copyright (c) 2008-2014 Jon Yurek and thoughtbot, inc.
|
6
|
+
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
8
|
+
of this software and associated documentation files (the "Software"), to deal
|
9
|
+
in the Software without restriction, including without limitation the rights
|
10
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
11
|
+
copies of the Software, and to permit persons to whom the Software is
|
12
|
+
furnished to do so, subject to the following conditions:
|
13
|
+
|
14
|
+
The above copyright notice and this permission notice shall be included in
|
15
|
+
all copies or substantial portions of the Software.
|
16
|
+
|
17
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
18
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
19
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
20
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
21
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
22
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
23
|
+
THE SOFTWARE.
|
24
|
+
|
25
|
+
== Tomcat
|
26
|
+
|
27
|
+
Apache Tomcat (Copyright 1999-2013 The Apache Software Foundation)
|
28
|
+
is licensed under the Apache License, Version 2.0.
|
29
|
+
See http://www.apache.org/licenses/LICENSE-2.0 for details.
|
data/README.md
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# Sinicum::Runner
|
2
|
+
|
3
|
+
Sinicum-runner is a simple embedded Tomcat server, which runs Magnolia CMS from
the app’s root directory.
|
4
|
+
|
5
|
+
It takes care of maven builds and makes it easy for a Rails Developer to use [Sinicum](https://github.com/dievision/sinicum).
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Add this line to your application's Gemfile:
|
10
|
+
|
11
|
+
gem 'sinicum-runner'
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
$ bundle
|
16
|
+
|
17
|
+
For more information, please visit [Sinicum](https://github.com/dievision/sinicum).
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/sinicum-runner
ADDED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,202 @@
|
|
1
|
+
require 'rexml/document'
|
2
|
+
require 'optparse'
|
3
|
+
|
4
|
+
module Sinicum
|
5
|
+
module Runner
|
6
|
+
class RunnerCli
|
7
|
+
RUNNER_TMP_DIR = ".sinicum-runner"
|
8
|
+
|
9
|
+
def run(args)
|
10
|
+
parse_args(args)
|
11
|
+
check_environment
|
12
|
+
setup_directories
|
13
|
+
build_webapp unless @options.skip_build
|
14
|
+
start_tomcat unless @options.only_build
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def check_environment
|
20
|
+
check_for_file("pom.xml")
|
21
|
+
check_for_file("Gemfile")
|
22
|
+
check_for_file(File.join(magnolia_module_dir, "pom.xml"))
|
23
|
+
end
|
24
|
+
|
25
|
+
def setup_directories
|
26
|
+
FileUtils.mkdir(runner_dir) unless File.exists?(runner_dir)
|
27
|
+
end
|
28
|
+
|
29
|
+
def check_for_file(file)
|
30
|
+
unless File.exists?(file)
|
31
|
+
puts "Required file #{file} not found. Please check if you are running the command " +
|
32
|
+
"from the Rails root directory."
|
33
|
+
exit 1
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def build_webapp
|
38
|
+
current_dir = FileUtils.pwd
|
39
|
+
FileUtils.cd(magnolia_module_dir)
|
40
|
+
run_command("mvn -Dmaven.test.skip=true clean package war:exploded")
|
41
|
+
ensure
|
42
|
+
FileUtils.cd(current_dir)
|
43
|
+
end
|
44
|
+
|
45
|
+
def start_tomcat
|
46
|
+
options = []
|
47
|
+
options.concat(@options.to_jvm_options)
|
48
|
+
options.concat(["-jar", jar_location, "--basedir", runner_dir,
|
49
|
+
"--appbase", webapp_directory_path])
|
50
|
+
options.concat(@options.to_option_args)
|
51
|
+
ret_value = system("java", *options)
|
52
|
+
exit 1 unless ret_value
|
53
|
+
ret_value
|
54
|
+
end
|
55
|
+
|
56
|
+
def runner_dir
|
57
|
+
File.expand_path(RUNNER_TMP_DIR)
|
58
|
+
end
|
59
|
+
|
60
|
+
def jar_location
|
61
|
+
loc = "#{File.dirname(__FILE__)}/../java/sinicum-runner-#{runner_jar_version}.jar"
|
62
|
+
File.expand_path(loc)
|
63
|
+
end
|
64
|
+
|
65
|
+
def runner_jar_version
|
66
|
+
unless @runner_jar_version
|
67
|
+
@runner_jar_version = version_from_pom(
|
68
|
+
File.join(File.dirname(__FILE__), "..", "..", "pom.xml"))
|
69
|
+
end
|
70
|
+
@runner_jar_version
|
71
|
+
end
|
72
|
+
|
73
|
+
def magnolia_module_dir
|
74
|
+
unless @magnolia_module_dir
|
75
|
+
pom = File.new("pom.xml")
|
76
|
+
doc = REXML::Document.new(pom)
|
77
|
+
@magnolia_module_dir = File.expand_path(
|
78
|
+
find_first_element(doc, "/project/modules/module").text)
|
79
|
+
end
|
80
|
+
@magnolia_module_dir
|
81
|
+
end
|
82
|
+
|
83
|
+
def webapp_directory_path
|
84
|
+
"#{magnolia_module_dir}/target/#{magnolia_module_name}-#{magnolia_module_version}"
|
85
|
+
end
|
86
|
+
|
87
|
+
def magnolia_module_name
|
88
|
+
unless @magnolia_module_name
|
89
|
+
pom = File.new(File.join(magnolia_module_dir, "pom.xml"))
|
90
|
+
doc = REXML::Document.new(pom)
|
91
|
+
@magnolia_module_name = find_first_element(doc, "/project/artifactId").text
|
92
|
+
end
|
93
|
+
@magnolia_module_name
|
94
|
+
end
|
95
|
+
|
96
|
+
def magnolia_module_version
|
97
|
+
unless @magnolia_module_version
|
98
|
+
pom = File.new(File.join(magnolia_module_dir, "pom.xml"))
|
99
|
+
doc = REXML::Document.new(pom)
|
100
|
+
element = find_first_element(doc, "/project/version")
|
101
|
+
unless element
|
102
|
+
find_first_element(doc, "/project/parent/version")
|
103
|
+
end
|
104
|
+
@magnolia_module_version = element.text
|
105
|
+
end
|
106
|
+
@magnolia_module_version
|
107
|
+
end
|
108
|
+
|
109
|
+
def version_from_pom(path)
|
110
|
+
version = nil
|
111
|
+
if File.exists?(path)
|
112
|
+
pom = File.new(path)
|
113
|
+
doc = REXML::Document.new(pom)
|
114
|
+
version = find_first_element(doc, "/project/version").text
|
115
|
+
end
|
116
|
+
version
|
117
|
+
end
|
118
|
+
|
119
|
+
def find_first_element(document, path)
|
120
|
+
element = nil
|
121
|
+
document.elements.each(path) do |el|
|
122
|
+
element = el
|
123
|
+
break
|
124
|
+
end
|
125
|
+
unless element
|
126
|
+
puts "No element with the path #{path} found pom.xml"
|
127
|
+
exit 1
|
128
|
+
end
|
129
|
+
element
|
130
|
+
end
|
131
|
+
|
132
|
+
def parse_args(args)
|
133
|
+
@options = Options.new(args)
|
134
|
+
end
|
135
|
+
|
136
|
+
def run_command(command, options = nil)
|
137
|
+
if options
|
138
|
+
ret_value = system(command, *options)
|
139
|
+
else
|
140
|
+
ret_value = system(command)
|
141
|
+
end
|
142
|
+
raise "Error running command '#{command}'" unless ret_value
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
class Options
|
147
|
+
attr_reader :port, :ajp_port, :context, :skip_build, :only_build, :hostname
|
148
|
+
|
149
|
+
def initialize(args = [])
|
150
|
+
opts = OptionParser.new do |opts|
|
151
|
+
opts.on("-p", "--port [PORT]", "HTTP port to bind to") do |port|
|
152
|
+
@port = port
|
153
|
+
end
|
154
|
+
opts.on("-a", "--ajp [AJP_PORT]", "enable the AJP web protocol") do |ajp_port|
|
155
|
+
@ajp_port = ajp_port
|
156
|
+
end
|
157
|
+
opts.on("-c", "--context [CONTEXT_PATH]", "application context path") do |context|
|
158
|
+
@context = context
|
159
|
+
end
|
160
|
+
opts.on("-n", "--hostname [HOSTNAME]", "application host name") do |hostname|
|
161
|
+
@hostname = hostname
|
162
|
+
end
|
163
|
+
@skip_build = false
|
164
|
+
opts.on("-s", "--skip-build", "skips the build of the Maven project") do |skip|
|
165
|
+
@skip_build = true
|
166
|
+
end
|
167
|
+
@only_build = false
|
168
|
+
opts.on("-b", "--only-build", "only builds the Maven project") do |skip|
|
169
|
+
@only_build = true
|
170
|
+
end
|
171
|
+
opts.on("-J[PARAM]", "JVM parameter") do |parameter|
|
172
|
+
jvm_params << parameter
|
173
|
+
end
|
174
|
+
end
|
175
|
+
opts.parse!(args)
|
176
|
+
end
|
177
|
+
|
178
|
+
def jvm_params
|
179
|
+
@jvm_params ||= []
|
180
|
+
end
|
181
|
+
|
182
|
+
def to_jvm_options
|
183
|
+
result = []
|
184
|
+
if jvm_params.size == 0
|
185
|
+
result << "-Xmx512m"
|
186
|
+
else
|
187
|
+
jvm_params.each { |par| result << par }
|
188
|
+
end
|
189
|
+
result
|
190
|
+
end
|
191
|
+
|
192
|
+
def to_option_args
|
193
|
+
args = []
|
194
|
+
args.concat(["-p", port]) if port
|
195
|
+
args.concat(["-a", ajp_port]) if ajp_port
|
196
|
+
args.concat(["-c", context]) if context
|
197
|
+
args.concat(["-n", hostname]) if hostname
|
198
|
+
args
|
199
|
+
end
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|
data/pom.xml
ADDED
@@ -0,0 +1,129 @@
|
|
1
|
+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
2
|
+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
3
|
+
<modelVersion>4.0.0</modelVersion>
|
4
|
+
|
5
|
+
<groupId>com.dievision.sinicum</groupId>
|
6
|
+
<artifactId>sinicum-runner</artifactId>
|
7
|
+
<version>0.5.0.pre2</version>
|
8
|
+
<packaging>jar</packaging>
|
9
|
+
|
10
|
+
<name>sinicum-runner</name>
|
11
|
+
<url>http://maven.apache.org</url>
|
12
|
+
|
13
|
+
<properties>
|
14
|
+
<tomcatVersion>7.0.53</tomcatVersion>
|
15
|
+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
16
|
+
</properties>
|
17
|
+
|
18
|
+
<dependencies>
|
19
|
+
<dependency>
|
20
|
+
<groupId>junit</groupId>
|
21
|
+
<artifactId>junit</artifactId>
|
22
|
+
<version>4.11</version>
|
23
|
+
<scope>test</scope>
|
24
|
+
</dependency>
|
25
|
+
|
26
|
+
<dependency>
|
27
|
+
<groupId>org.apache.tomcat</groupId>
|
28
|
+
<artifactId>tomcat-catalina</artifactId>
|
29
|
+
<version>${tomcatVersion}</version>
|
30
|
+
</dependency>
|
31
|
+
|
32
|
+
<dependency>
|
33
|
+
<groupId>org.apache.tomcat</groupId>
|
34
|
+
<artifactId>tomcat-jasper</artifactId>
|
35
|
+
<version>${tomcatVersion}</version>
|
36
|
+
</dependency>
|
37
|
+
|
38
|
+
<dependency>
|
39
|
+
<groupId>org.apache.tomcat.embed</groupId>
|
40
|
+
<artifactId>tomcat-embed-core</artifactId>
|
41
|
+
<version>${tomcatVersion}</version>
|
42
|
+
</dependency>
|
43
|
+
|
44
|
+
<dependency>
|
45
|
+
<groupId>com.beust</groupId>
|
46
|
+
<artifactId>jcommander</artifactId>
|
47
|
+
<version>1.30</version>
|
48
|
+
</dependency>
|
49
|
+
</dependencies>
|
50
|
+
|
51
|
+
<build>
|
52
|
+
<plugins>
|
53
|
+
<plugin>
|
54
|
+
<artifactId>maven-jar-plugin</artifactId>
|
55
|
+
<configuration>
|
56
|
+
<archive>
|
57
|
+
<manifest>
|
58
|
+
<addClasspath>true</addClasspath>
|
59
|
+
<classpathPrefix>lib/</classpathPrefix>
|
60
|
+
<mainClass>com.dievision.sinicum.runner.Main</mainClass>
|
61
|
+
</manifest>
|
62
|
+
</archive>
|
63
|
+
</configuration>
|
64
|
+
</plugin>
|
65
|
+
|
66
|
+
<plugin>
|
67
|
+
<groupId>org.apache.maven.plugins</groupId>
|
68
|
+
<artifactId>maven-dependency-plugin</artifactId>
|
69
|
+
<version>2.6</version>
|
70
|
+
<executions>
|
71
|
+
<execution>
|
72
|
+
<id>copy-dependencies</id>
|
73
|
+
<phase>package</phase>
|
74
|
+
<goals>
|
75
|
+
<goal>copy-dependencies</goal>
|
76
|
+
</goals>
|
77
|
+
<configuration>
|
78
|
+
<outputDirectory>${basedir}/lib/java/lib</outputDirectory>
|
79
|
+
<excludeArtifactIds>junit</excludeArtifactIds>
|
80
|
+
</configuration>
|
81
|
+
</execution>
|
82
|
+
</executions>
|
83
|
+
</plugin>
|
84
|
+
|
85
|
+
<plugin>
|
86
|
+
<artifactId>maven-resources-plugin</artifactId>
|
87
|
+
<version>2.6</version>
|
88
|
+
<executions>
|
89
|
+
<execution>
|
90
|
+
<id>copy-resources</id>
|
91
|
+
<phase>package</phase>
|
92
|
+
<goals>
|
93
|
+
<goal>copy-resources</goal>
|
94
|
+
</goals>
|
95
|
+
<configuration>
|
96
|
+
<outputDirectory>${basedir}/lib/java</outputDirectory>
|
97
|
+
<resources>
|
98
|
+
<resource>
|
99
|
+
<directory>target</directory>
|
100
|
+
<includes>
|
101
|
+
<include>sinicum-runner-${version}.jar</include>
|
102
|
+
</includes>
|
103
|
+
</resource>
|
104
|
+
</resources>
|
105
|
+
</configuration>
|
106
|
+
</execution>
|
107
|
+
</executions>
|
108
|
+
</plugin>
|
109
|
+
|
110
|
+
<plugin>
|
111
|
+
<artifactId>maven-clean-plugin</artifactId>
|
112
|
+
<version>2.5</version>
|
113
|
+
<configuration>
|
114
|
+
<filesets>
|
115
|
+
<fileset>
|
116
|
+
<directory>${basedir}/lib/java</directory>
|
117
|
+
<includes>
|
118
|
+
<include>**/*.*</include>
|
119
|
+
</includes>
|
120
|
+
<excludes>
|
121
|
+
<exclude>.gitkeep</exclude>
|
122
|
+
</excludes>
|
123
|
+
</fileset>
|
124
|
+
</filesets>
|
125
|
+
</configuration>
|
126
|
+
</plugin>
|
127
|
+
</plugins>
|
128
|
+
</build>
|
129
|
+
</project>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'sinicum-runner/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |gem|
|
7
|
+
gem.name = "sinicum-runner"
|
8
|
+
gem.version = Sinicum::Runner::VERSION
|
9
|
+
gem.authors = ["Patrik Metzmacher", "Daniel Trierweiler"]
|
10
|
+
gem.email = ["sinicum@dievision.de"]
|
11
|
+
gem.description = "A gem to easily run Magnolia CMS in a Tomcat instance"
|
12
|
+
gem.summary = "Simple embedded Tomcat server"
|
13
|
+
gem.homepage = "https://github.com/dievision/sinicum-runner"
|
14
|
+
gem.license = "MIT/Apache-2.0"
|
15
|
+
|
16
|
+
gem.files = `git ls-files`.split($/)
|
17
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
18
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
19
|
+
gem.require_paths = ["lib"]
|
20
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require_relative '../../lib/sinicum-runner/runner_cli'
|
2
|
+
|
3
|
+
module Sinicum
|
4
|
+
module Runner
|
5
|
+
describe Options do
|
6
|
+
it "should work without options" do
|
7
|
+
opts = Options.new([])
|
8
|
+
opts.should_not be nil
|
9
|
+
end
|
10
|
+
|
11
|
+
it "shoud parse the port" do
|
12
|
+
opts = Options.new(["-p", "8090"])
|
13
|
+
opts.port.should eq("8090")
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should parse the AJP port" do
|
17
|
+
opts = Options.new(["-a", "8009"])
|
18
|
+
opts.ajp_port.should eq("8009")
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should parse the context path" do
|
22
|
+
opts = Options.new(["-c", "some_context"])
|
23
|
+
opts.context.should eq("some_context")
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should allow for multiple JVM args" do
|
27
|
+
opts = Options.new(["-JXmx256m", "-JXmn256m"])
|
28
|
+
opts.jvm_params.should eq(["Xmx256m", "Xmn256m"])
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should use Xmx512m as JVM option by default" do
|
32
|
+
opts = Options.new
|
33
|
+
opts.to_jvm_options.should eq(["-Xmx512m"])
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should use other JVM options if any JVM arguments are given" do
|
37
|
+
opts = Options.new(["-J-Xmn256m", "-J-XX:MaxPermSize=256m"])
|
38
|
+
opts.to_jvm_options.should eq(["-Xmn256m", "-XX:MaxPermSize=256m"])
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should not skip the build by default" do
|
42
|
+
opts = Options.new
|
43
|
+
opts.skip_build.should be false
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should skip the build if asked to do so" do
|
47
|
+
opts = Options.new(["-s"])
|
48
|
+
opts.skip_build.should be true
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should not skip the server by default" do
|
52
|
+
opts = Options.new
|
53
|
+
opts.only_build.should be false
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should skip the server if asked to do so" do
|
57
|
+
opts = Options.new(["-b"])
|
58
|
+
opts.only_build.should be true
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
package com.dievision.sinicum.runner;
|
2
|
+
|
3
|
+
import com.beust.jcommander.Parameter;
|
4
|
+
|
5
|
+
/**
|
6
|
+
*
|
7
|
+
*/
|
8
|
+
public class Configuration {
|
9
|
+
@Parameter(names = "-p", description = "HTTP Port")
|
10
|
+
private Integer httpPort = 8080;
|
11
|
+
|
12
|
+
@Parameter(names = {"-a", "--ajp"}, description = "AJP Port")
|
13
|
+
private Integer ajpPort;
|
14
|
+
|
15
|
+
@Parameter(names = {"-c", "--context"}, description = "AJP Port")
|
16
|
+
private String contextPath = "";
|
17
|
+
|
18
|
+
@Parameter(names = {"-n", "--hostname"}, description = "Tomcat Hostname")
|
19
|
+
private String hostname;
|
20
|
+
|
21
|
+
@Parameter(names = "--basedir", description = "Tomcat Base directory", required = true)
|
22
|
+
private String baseDir;
|
23
|
+
|
24
|
+
@Parameter(names = "--appbase", description = "Tomcat App Base directory", required = true)
|
25
|
+
private String appBase;
|
26
|
+
|
27
|
+
public Integer getHttpPort() {
|
28
|
+
return httpPort;
|
29
|
+
}
|
30
|
+
|
31
|
+
public Integer getAjpPort() {
|
32
|
+
return ajpPort;
|
33
|
+
}
|
34
|
+
|
35
|
+
public String getAppBase() {
|
36
|
+
return appBase;
|
37
|
+
}
|
38
|
+
|
39
|
+
public String getBaseDir() {
|
40
|
+
return baseDir;
|
41
|
+
}
|
42
|
+
|
43
|
+
public String getContextPath() {
|
44
|
+
return contextPath;
|
45
|
+
}
|
46
|
+
|
47
|
+
public String getHostname() {
|
48
|
+
return hostname;
|
49
|
+
}
|
50
|
+
}
|
@@ -0,0 +1,48 @@
|
|
1
|
+
package com.dievision.sinicum.runner;
|
2
|
+
|
3
|
+
import org.apache.catalina.LifecycleException;
|
4
|
+
import org.apache.catalina.connector.Connector;
|
5
|
+
import org.apache.catalina.startup.Tomcat;
|
6
|
+
|
7
|
+
import com.beust.jcommander.JCommander;
|
8
|
+
|
9
|
+
public class Main {
|
10
|
+
public static void main(String[] args) throws Exception {
|
11
|
+
Configuration config = new Configuration();
|
12
|
+
new JCommander(config, args);
|
13
|
+
|
14
|
+
Tomcat tomcat = new Tomcat();
|
15
|
+
tomcat.setPort(config.getHttpPort());
|
16
|
+
tomcat.getConnector().setURIEncoding("UTF-8");
|
17
|
+
if (config.getAjpPort() != null) {
|
18
|
+
Connector connector = new Connector("AJP/1.3");
|
19
|
+
connector.setPort(config.getAjpPort());
|
20
|
+
connector.setURIEncoding("UTF-8");
|
21
|
+
tomcat.getService().addConnector(connector);
|
22
|
+
}
|
23
|
+
tomcat.setBaseDir(config.getBaseDir());
|
24
|
+
tomcat.getHost().setAppBase(config.getAppBase());
|
25
|
+
if (config.getHostname() != null) {
|
26
|
+
tomcat.setHostname(config.getHostname());
|
27
|
+
tomcat.getHost().setName(config.getHostname());
|
28
|
+
}
|
29
|
+
tomcat.addWebapp(config.getContextPath(), config.getAppBase());
|
30
|
+
addShutdownHook(tomcat);
|
31
|
+
tomcat.start();
|
32
|
+
tomcat.getServer().await();
|
33
|
+
}
|
34
|
+
|
35
|
+
private static void addShutdownHook(final Tomcat tomcat) {
|
36
|
+
Runtime runtime = Runtime.getRuntime();
|
37
|
+
runtime.addShutdownHook(new Thread(new Runnable() {
|
38
|
+
@Override
|
39
|
+
public void run() {
|
40
|
+
try {
|
41
|
+
tomcat.getServer().stop();
|
42
|
+
} catch (LifecycleException e) {
|
43
|
+
System.err.println("Error stopping Tomcat: " + e.toString());
|
44
|
+
}
|
45
|
+
}
|
46
|
+
}));
|
47
|
+
}
|
48
|
+
}
|
@@ -0,0 +1,83 @@
|
|
1
|
+
package com.dievision.sinicum.runner;
|
2
|
+
|
3
|
+
import org.junit.Before;
|
4
|
+
import org.junit.Test;
|
5
|
+
|
6
|
+
import com.beust.jcommander.JCommander;
|
7
|
+
import static junit.framework.Assert.*;
|
8
|
+
|
9
|
+
/**
|
10
|
+
*
|
11
|
+
*/
|
12
|
+
public class ConfigurationTest {
|
13
|
+
private Configuration config;
|
14
|
+
private String[] argv;
|
15
|
+
|
16
|
+
@Before
|
17
|
+
public void setUp() {
|
18
|
+
this.config = new Configuration();
|
19
|
+
this.argv = new String[]{"--basedir", ".", "--appbase", "."};
|
20
|
+
}
|
21
|
+
|
22
|
+
@Test
|
23
|
+
public void testDefaultHttpPort() {
|
24
|
+
new JCommander(config, argv);
|
25
|
+
assertEquals(8080, config.getHttpPort().intValue());
|
26
|
+
}
|
27
|
+
|
28
|
+
@Test
|
29
|
+
public void testHttpPortOption() {
|
30
|
+
addArgs(new String[]{ "-p", "3000" });
|
31
|
+
new JCommander(config, argv);
|
32
|
+
assertEquals(3000, config.getHttpPort().intValue());
|
33
|
+
}
|
34
|
+
|
35
|
+
@Test
|
36
|
+
public void testAjpNullByDefault() {
|
37
|
+
new JCommander(config, argv);
|
38
|
+
assertNull(config.getAjpPort());
|
39
|
+
}
|
40
|
+
|
41
|
+
@Test
|
42
|
+
public void testSetAjpPort() {
|
43
|
+
addArgs(new String[]{ "--ajp", "8009" });
|
44
|
+
new JCommander(config, argv);
|
45
|
+
assertEquals(8009, config.getAjpPort().intValue());
|
46
|
+
}
|
47
|
+
|
48
|
+
@Test
|
49
|
+
public void testHostname() {
|
50
|
+
addArgs(new String[]{ "-n", "ahostname" });
|
51
|
+
new JCommander(config, argv);
|
52
|
+
assertEquals("ahostname", config.getHostname());
|
53
|
+
}
|
54
|
+
|
55
|
+
@Test
|
56
|
+
public void testBaseDirAppBase() {
|
57
|
+
argv = new String[]{ "--basedir", "/path/to/dir", "--appbase", "/path/to/appbase"};
|
58
|
+
new JCommander(config, argv);
|
59
|
+
assertEquals("/path/to/dir", config.getBaseDir());
|
60
|
+
assertEquals("/path/to/appbase", config.getAppBase());
|
61
|
+
}
|
62
|
+
|
63
|
+
@Test
|
64
|
+
public void contextPathIsEmptyByDefault() {
|
65
|
+
new JCommander(config, argv);
|
66
|
+
assertEquals("", config.getContextPath());
|
67
|
+
}
|
68
|
+
|
69
|
+
@Test
|
70
|
+
public void contextPathCanBeSet() {
|
71
|
+
addArgs(new String[]{"-c", "/somepath"});
|
72
|
+
new JCommander(config, argv);
|
73
|
+
assertEquals("/somepath", config.getContextPath());
|
74
|
+
}
|
75
|
+
|
76
|
+
private void addArgs(String[] args) {
|
77
|
+
String[] newArgv = new String[argv.length + args.length];
|
78
|
+
System.arraycopy(argv, 0, newArgv, 0, argv.length);
|
79
|
+
System.arraycopy(args, 0, newArgv, argv.length, args.length);
|
80
|
+
this.argv = newArgv;
|
81
|
+
}
|
82
|
+
|
83
|
+
}
|
metadata
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sinicum-runner
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.5.0.pre2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Patrik Metzmacher
|
8
|
+
- Daniel Trierweiler
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2014-04-16 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: A gem to easily run Magnolia CMS in a Tomcat instance
|
15
|
+
email:
|
16
|
+
- sinicum@dievision.de
|
17
|
+
executables:
|
18
|
+
- sinicum-runner
|
19
|
+
extensions: []
|
20
|
+
extra_rdoc_files: []
|
21
|
+
files:
|
22
|
+
- ".gitignore"
|
23
|
+
- Gemfile
|
24
|
+
- LICENSE
|
25
|
+
- README.md
|
26
|
+
- Rakefile
|
27
|
+
- bin/sinicum-runner
|
28
|
+
- lib/java/lib/ecj-P20140317-1600.jar
|
29
|
+
- lib/java/lib/hamcrest-core-1.3.jar
|
30
|
+
- lib/java/lib/jcommander-1.30.jar
|
31
|
+
- lib/java/lib/tomcat-annotations-api-7.0.53.jar
|
32
|
+
- lib/java/lib/tomcat-api-7.0.53.jar
|
33
|
+
- lib/java/lib/tomcat-catalina-7.0.53.jar
|
34
|
+
- lib/java/lib/tomcat-el-api-7.0.53.jar
|
35
|
+
- lib/java/lib/tomcat-embed-core-7.0.53.jar
|
36
|
+
- lib/java/lib/tomcat-jasper-7.0.53.jar
|
37
|
+
- lib/java/lib/tomcat-jasper-el-7.0.53.jar
|
38
|
+
- lib/java/lib/tomcat-jsp-api-7.0.53.jar
|
39
|
+
- lib/java/lib/tomcat-juli-7.0.53.jar
|
40
|
+
- lib/java/lib/tomcat-servlet-api-7.0.53.jar
|
41
|
+
- lib/java/lib/tomcat-util-7.0.53.jar
|
42
|
+
- lib/java/sinicum-runner-0.5.0.jar
|
43
|
+
- lib/java/sinicum-runner-0.5.0.pre1.jar
|
44
|
+
- lib/sinicum-runner.rb
|
45
|
+
- lib/sinicum-runner/runner_cli.rb
|
46
|
+
- lib/sinicum-runner/version.rb
|
47
|
+
- pom.xml
|
48
|
+
- sinicum-runner.gemspec
|
49
|
+
- spec/sinicum-runner/runner_cli_spec.rb
|
50
|
+
- src/main/java/com/dievision/sinicum/runner/Configuration.java
|
51
|
+
- src/main/java/com/dievision/sinicum/runner/Main.java
|
52
|
+
- src/test/java/com/dievision/sinicum/runner/ConfigurationTest.java
|
53
|
+
homepage: https://github.com/dievision/sinicum-runner
|
54
|
+
licenses:
|
55
|
+
- MIT/Apache-2.0
|
56
|
+
metadata: {}
|
57
|
+
post_install_message:
|
58
|
+
rdoc_options: []
|
59
|
+
require_paths:
|
60
|
+
- lib
|
61
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - ">"
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: 1.3.1
|
71
|
+
requirements: []
|
72
|
+
rubyforge_project:
|
73
|
+
rubygems_version: 2.2.2
|
74
|
+
signing_key:
|
75
|
+
specification_version: 4
|
76
|
+
summary: Simple embedded Tomcat server
|
77
|
+
test_files:
|
78
|
+
- spec/sinicum-runner/runner_cli_spec.rb
|
79
|
+
has_rdoc:
|