Skip to content

Commit a87f57f

Browse files
committed
Merge 114796085-link-boot-inf-lib to master
[Completes #114796085]
2 parents 0db2dba + 2ead955 commit a87f57f

3 files changed

Lines changed: 24 additions & 19 deletions

File tree

lib/java_buildpack/container/java_main.rb

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,8 @@ def detect
4545

4646
# (see JavaBuildpack::Component::BaseComponent#compile)
4747
def compile
48-
if @spring_boot_utils.is?(@application)
49-
@droplet.additional_libraries.link_to(@spring_boot_utils.lib(@droplet))
50-
end
48+
return unless @spring_boot_utils.is?(@application)
49+
@droplet.additional_libraries.link_to(@spring_boot_utils.lib(@droplet))
5150
end
5251

5352
# (see JavaBuildpack::Component::BaseComponent#release)
@@ -60,7 +59,8 @@ def release
6059
@droplet.additional_libraries.insert 0, @application.root
6160
end
6261

63-
release_text
62+
classpath = @spring_boot_utils.is?(@application) ? '-cp $PWD/.' : @droplet.additional_libraries.as_classpath
63+
release_text(classpath)
6464
end
6565

6666
private
@@ -71,29 +71,19 @@ def release
7171

7272
private_constant :ARGUMENTS_PROPERTY, :CLASS_PATH_PROPERTY
7373

74-
def release_text
75-
release = [
74+
def release_text(classpath)
75+
[
7676
@droplet.java_opts.as_env_var,
7777
'&&',
7878
@droplet.environment_variables.as_env_vars,
7979
'eval',
8080
'exec',
8181
"#{qualify_path @droplet.java_home.root, @droplet.root}/bin/java",
82-
'$JAVA_OPTS'
83-
]
84-
85-
if @spring_boot_utils.is?(@application)
86-
release << '-cp $PWD/.'
87-
else
88-
release << @droplet.additional_libraries.as_classpath
89-
end
90-
91-
release << [
82+
'$JAVA_OPTS',
83+
classpath,
9284
main_class,
9385
arguments
94-
]
95-
96-
release.flatten.compact.join(' ')
86+
].flatten.compact.join(' ')
9787
end
9888

9989
def arguments

lib/java_buildpack/util/spring_boot_utils.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,12 @@ def is?(application)
3838
@jar_finder.is?(application)
3939
end
4040

41+
# The lib directory of Spring Boot used by the application
42+
#
43+
# @param [Droplet] droplet the droplet to search
44+
# @return [String] the lib directory of Spring Boot used by the application
4145
def lib(droplet)
46+
return boot_inf_lib_dir(droplet) if boot_inf_lib_dir(droplet).exist?
4247
return web_inf_lib_dir(droplet) if web_inf_lib_dir(droplet).exist?
4348
return lib_dir(droplet) if lib_dir(droplet).exist?
4449
fail('No lib directory found')
@@ -59,6 +64,10 @@ def version(application)
5964

6065
private_constant :SPRING_BOOT_VERSION
6166

67+
def boot_inf_lib_dir(droplet)
68+
droplet.root + 'BOOT-INF/lib'
69+
end
70+
6271
def lib_dir(droplet)
6372
droplet.root + 'lib'
6473
end

spec/java_buildpack/util/spring_boot_utils_spec.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,12 @@
6565
expect(utils.version(application)).to match(/1.2.5.RELEASE/)
6666
end
6767

68+
it 'returns BOOT-INF/lib as lib directory' do
69+
FileUtils.mkdir_p(app_dir + 'BOOT-INF/lib')
70+
71+
expect(utils.lib(droplet)).to eq(droplet.root + 'BOOT-INF/lib')
72+
end
73+
6874
it 'returns WEB-INF/lib as lib directory' do
6975
FileUtils.mkdir_p(app_dir + 'WEB-INF/lib')
7076

0 commit comments

Comments
 (0)