Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
97fee466
Commit
97fee466
authored
Nov 01, 2016
by
Phillip Webb
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert Layout changes
This reverts commits: -
974ec92a
. -
537e0c12
. -
500a3df6
.
parent
9fc8d611
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
88 additions
and
337 deletions
+88
-337
build-tool-plugins.adoc
spring-boot-docs/src/main/asciidoc/build-tool-plugins.adoc
+1
-32
SpringBootPluginExtension.java
...pringframework/boot/gradle/SpringBootPluginExtension.java
+30
-6
JarWriter.java
...java/org/springframework/boot/loader/tools/JarWriter.java
+3
-12
Layout.java
...in/java/org/springframework/boot/loader/tools/Layout.java
+2
-12
LayoutFactory.java
.../org/springframework/boot/loader/tools/LayoutFactory.java
+0
-31
LayoutType.java
...ava/org/springframework/boot/loader/tools/LayoutType.java
+0
-101
Layouts.java
...n/java/org/springframework/boot/loader/tools/Layouts.java
+0
-25
Repackager.java
...ava/org/springframework/boot/loader/tools/Repackager.java
+1
-1
LayoutTypeTests.java
...rg/springframework/boot/loader/tools/LayoutTypeTests.java
+0
-53
spring.factories
...loader-tools/src/test/resources/META-INF/spring.factories
+0
-2
RepackageMojo.java
...in/java/org/springframework/boot/maven/RepackageMojo.java
+51
-3
custom-layout.apt.vm
...t-maven-plugin/src/site/apt/examples/custom-layout.apt.vm
+0
-57
index.apt
...oot-tools/spring-boot-maven-plugin/src/site/apt/index.apt
+0
-2
No files found.
spring-boot-docs/src/main/asciidoc/build-tool-plugins.adoc
View file @
97fee466
...
...
@@ -493,7 +493,7 @@ The following configuration options are available:
[[
build
-
tool
-
plugins
-
gradle
-
configuration
-
layouts
]]
====
Available
built
-
in
layouts
====
Available
layouts
The
`
layout
`
attribute
configures
the
format
of
the
archive
and
whether
the
bootstrap
loader
should
be
included
or
not
.
The
following
layouts
are
available
:
...
...
@@ -530,37 +530,6 @@ loader should be included or not. The following layouts are available:
[[
build
-
tool
-
plugins
-
gradle
-
configuration
-
custom
-
layout
]]
====
Using
a
custom
layout
If
you
have
custom
requirements
for
how
to
arrange
the
dependencies
and
loader
classes
inside
the
repackaged
jar
,
you
can
use
a
custom
layout
in
addition
to
the
built
-
in
values
.
Any
library
which
defines
one
or
more
`
LayoutFactory
`
implementations
and
lists
them
in
`
META
-
INF
/
spring
.
factories
`
can
be
added
to
the
build
script
dependencies
and
then
the
layout
type
becomes
available
in
the
`
springBoot
`
configuration
.
For
example
[
source
,
groovy
,
indent
=
0
,
subs
=
"verbatim,attributes"
]
----
buildscript
{
ext
{
springBootVersion
=
'1.5.0.BUILD-SNAPSHOT'
customVersion
=
'0.0.1.BUILD-SNAPSHOT'
}
repositories
{
mavenLocal
()
mavenCentral
()
}
dependencies
{
classpath
(
"com.example:custom-layout:${customVersion}"
)
classpath
(
"org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}"
)
}
}
springBoot
{
layout
=
'CUSTOM'
}
----
[[
build
-
tool
-
plugins
-
understanding
-
the
-
gradle
-
plugin
]]
===
Understanding
how
the
Gradle
plugin
works
When
`
spring
-
boot
`
is
applied
to
your
Gradle
project
a
default
task
named
`
bootRepackage
`
...
...
spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/SpringBootPluginExtension.java
View file @
97fee466
...
...
@@ -21,13 +21,12 @@ import java.util.Map;
import
java.util.Set
;
import
groovy.lang.Closure
;
import
org.gradle.api.Project
;
import
org.gradle.api.plugins.JavaPlugin
;
import
org.springframework.boot.gradle.buildinfo.BuildInfo
;
import
org.springframework.boot.loader.tools.Layout
;
import
org.springframework.boot.loader.tools.Layout
Type
;
import
org.springframework.boot.loader.tools.Layout
s
;
/**
* Gradle DSL Extension for 'Spring Boot'. Most of the time Spring Boot can guess the
...
...
@@ -89,7 +88,7 @@ public class SpringBootPluginExtension {
* the MANIFEST.MF 'Main-Class' to be PropertiesLauncher. Gradle will coerce literal
* String values to the correct type.
*/
String
layout
;
LayoutType
layout
;
/**
* Libraries that must be unpacked from fat jars in order to run. Use Strings in the
...
...
@@ -146,7 +145,7 @@ public class SpringBootPluginExtension {
* @return the Layout to use or null if not explicitly set
*/
public
Layout
convertLayout
()
{
return
(
this
.
layout
==
null
?
null
:
LayoutType
.
layout
(
this
.
layout
)
);
return
(
this
.
layout
==
null
?
null
:
this
.
layout
.
layout
);
}
public
String
getMainClass
()
{
...
...
@@ -189,11 +188,11 @@ public class SpringBootPluginExtension {
this
.
backupSource
=
backupSource
;
}
public
String
getLayout
()
{
public
LayoutType
getLayout
()
{
return
this
.
layout
;
}
public
void
setLayout
(
String
layout
)
{
public
void
setLayout
(
LayoutType
layout
)
{
this
.
layout
=
layout
;
}
...
...
@@ -277,4 +276,29 @@ public class SpringBootPluginExtension {
}
}
/**
* Layout Types.
*/
enum
LayoutType
{
JAR
(
new
Layouts
.
Jar
()),
WAR
(
new
Layouts
.
War
()),
ZIP
(
new
Layouts
.
Expanded
()),
DIR
(
new
Layouts
.
Expanded
()),
MODULE
(
new
Layouts
.
Module
()),
NONE
(
new
Layouts
.
None
());
Layout
layout
;
LayoutType
(
Layout
layout
)
{
this
.
layout
=
layout
;
}
}
}
spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/JarWriter.java
View file @
97fee466
...
...
@@ -53,6 +53,8 @@ import org.springframework.lang.UsesJava7;
*/
public
class
JarWriter
{
private
static
final
String
NESTED_LOADER_JAR
=
"META-INF/loader/spring-boot-loader.jar"
;
private
static
final
int
BUFFER_SIZE
=
32
*
1024
;
private
final
JarOutputStream
jarOutput
;
...
...
@@ -204,20 +206,9 @@ public class JarWriter {
/**
* Write the required spring-boot-loader classes to the JAR.
* @throws IOException if the classes cannot be written
* @deprecated us {@link #writeLoaderClasses(String)} instead
*/
@Deprecated
public
void
writeLoaderClasses
()
throws
IOException
{
writeLoaderClasses
(
Layouts
.
DEFAULT_LOADER_JAR
);
}
/**
* Write the required spring-boot-loader classes to the JAR.
* @param loaderJarPath the path to the loader jar (in the classpath)
* @throws IOException if the classes cannot be written
*/
public
void
writeLoaderClasses
(
String
loaderJarPath
)
throws
IOException
{
URL
loaderJar
=
getClass
().
getClassLoader
().
getResource
(
loaderJarPath
);
URL
loaderJar
=
getClass
().
getClassLoader
().
getResource
(
NESTED_LOADER_JAR
);
JarInputStream
inputStream
=
new
JarInputStream
(
new
BufferedInputStream
(
loaderJar
.
openStream
()));
JarEntry
entry
;
...
...
spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/Layout.java
View file @
97fee466
...
...
@@ -40,25 +40,15 @@ public interface Layout {
String
getLibraryDestination
(
String
libraryName
,
LibraryScope
scope
);
/**
* Returns the location of classes within the archive. Empty if the location is the
* root path, otherwise ends with a slash ('/').
* Returns the location of classes within the archive.
* @return the classes location
*/
String
getClassesLocation
();
/**
* Returns if loader classes should be included to make the archive executable. If
* true, then {@link #getLoaderJarPath()} should point to a valid jar file that
* contains the loader classes.
* Returns if loader classes should be included to make the archive executable.
* @return if the layout is executable
*/
boolean
isExecutable
();
/**
* Returns the path to a nested jar that contains the loader, and which will be
* unpacked into the root of the repackaged jar.
* @return the path to a nested jar that contains the loader
*/
String
getLoaderJarPath
();
}
spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/LayoutFactory.java
deleted
100644 → 0
View file @
9fc8d611
/*
* Copyright 2012-2015 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
loader
.
tools
;
/**
* Strategy for creating instances of {@link Layout}.
*
* @author Dave Syer
*
*/
public
interface
LayoutFactory
{
Layout
getLayout
();
String
getName
();
}
spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/LayoutType.java
deleted
100644 → 0
View file @
9fc8d611
/*
* Copyright 2012-2015 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
loader
.
tools
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
org.springframework.core.io.support.SpringFactoriesLoader
;
/**
* Archive layout types.
*
* @author Dave Syer
*/
public
enum
LayoutType
{
/**
* Jar Layout.
*/
JAR
(
new
Layouts
.
Jar
()),
/**
* War Layout.
*/
WAR
(
new
Layouts
.
War
()),
/**
* Zip Layout.
*/
ZIP
(
new
Layouts
.
Expanded
()),
/**
* Dir Layout.
*/
DIR
(
new
Layouts
.
Expanded
()),
/**
* Module Layout.
*/
MODULE
(
new
Layouts
.
Module
()),
/**
* No Layout.
*/
NONE
(
new
Layouts
.
None
());
private
static
Map
<
String
,
Layout
>
customTypes
;
private
final
Layout
layout
;
public
Layout
layout
()
{
return
this
.
layout
;
}
LayoutType
(
Layout
layout
)
{
this
.
layout
=
layout
;
}
public
static
Layout
layout
(
String
value
)
{
try
{
return
valueOf
(
value
).
layout
();
}
catch
(
IllegalArgumentException
e
)
{
if
(
customTypes
==
null
)
{
customTypes
=
new
HashMap
<
String
,
Layout
>();
lookupCustomTypes
();
}
Layout
layout
=
customTypes
.
get
(
value
);
if
(
layout
==
null
)
{
throw
new
IllegalArgumentException
(
"Cannot resolve custom layout type: "
+
value
);
}
return
layout
;
}
}
private
static
void
lookupCustomTypes
()
{
ClassLoader
classLoader
=
LayoutType
.
class
.
getClassLoader
();
List
<
LayoutFactory
>
factories
=
SpringFactoriesLoader
.
loadFactories
(
LayoutFactory
.
class
,
classLoader
);
for
(
LayoutFactory
factory
:
factories
)
{
customTypes
.
put
(
factory
.
getName
(),
factory
.
getLayout
());
}
}
}
spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/Layouts.java
View file @
97fee466
...
...
@@ -33,11 +33,6 @@ import java.util.Set;
*/
public
final
class
Layouts
{
/**
* Default value for {@link Layout#getLoaderJarPath()}.
*/
public
static
final
String
DEFAULT_LOADER_JAR
=
"META-INF/loader/spring-boot-loader.jar"
;
private
Layouts
()
{
}
...
...
@@ -92,11 +87,6 @@ public final class Layouts {
return
true
;
}
@Override
public
String
getLoaderJarPath
()
{
return
DEFAULT_LOADER_JAR
;
}
}
/**
...
...
@@ -126,11 +116,6 @@ public final class Layouts {
return
false
;
}
@Override
public
String
getLoaderJarPath
()
{
return
DEFAULT_LOADER_JAR
;
}
}
/**
...
...
@@ -169,11 +154,6 @@ public final class Layouts {
return
true
;
}
@Override
public
String
getLoaderJarPath
()
{
return
DEFAULT_LOADER_JAR
;
}
}
/**
...
...
@@ -208,11 +188,6 @@ public final class Layouts {
return
false
;
}
@Override
public
String
getLoaderJarPath
()
{
return
DEFAULT_LOADER_JAR
;
}
}
}
spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/Repackager.java
View file @
97fee466
...
...
@@ -217,7 +217,7 @@ public class Repackager {
}
writeNestedLibraries
(
standardLibraries
,
seen
,
writer
);
if
(
this
.
layout
.
isExecutable
())
{
writer
.
writeLoaderClasses
(
this
.
layout
.
getLoaderJarPath
()
);
writer
.
writeLoaderClasses
();
}
}
finally
{
...
...
spring-boot-tools/spring-boot-loader-tools/src/test/java/org/springframework/boot/loader/tools/LayoutTypeTests.java
deleted
100644 → 0
View file @
9fc8d611
/*
* Copyright 2012-2015 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
loader
.
tools
;
import
org.junit.Test
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
/**
* @author Dave Syer
*
*/
public
class
LayoutTypeTests
{
@Test
public
void
standardType
()
{
assertThat
(
LayoutType
.
layout
(
"DIR"
))
.
isEqualTo
(
LayoutType
.
valueOf
(
"DIR"
).
layout
());
}
@Test
public
void
customType
()
{
assertThat
(
LayoutType
.
layout
(
"CUSTOM"
)).
isNotNull
();
}
public
static
class
TestLayoutFactory
implements
LayoutFactory
{
@Override
public
Layout
getLayout
()
{
return
new
Layouts
.
Jar
();
}
@Override
public
String
getName
()
{
return
"CUSTOM"
;
}
}
}
spring-boot-tools/spring-boot-loader-tools/src/test/resources/META-INF/spring.factories
deleted
100644 → 0
View file @
9fc8d611
org.springframework.boot.loader.tools.LayoutFactory=\
org.springframework.boot.loader.tools.LayoutTypeTests.TestLayoutFactory
\ No newline at end of file
spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/RepackageMojo.java
View file @
97fee466
...
...
@@ -42,7 +42,8 @@ import org.apache.maven.shared.artifact.filter.collection.ScopeFilter;
import
org.springframework.boot.loader.tools.DefaultLaunchScript
;
import
org.springframework.boot.loader.tools.LaunchScript
;
import
org.springframework.boot.loader.tools.LayoutType
;
import
org.springframework.boot.loader.tools.Layout
;
import
org.springframework.boot.loader.tools.Layouts
;
import
org.springframework.boot.loader.tools.Libraries
;
import
org.springframework.boot.loader.tools.Repackager
;
...
...
@@ -130,7 +131,7 @@ public class RepackageMojo extends AbstractDependencyFilterMojo {
* @since 1.0
*/
@Parameter
private
String
layout
;
private
LayoutType
layout
;
/**
* A list of the libraries that must be unpacked from fat jars in order to run.
...
...
@@ -227,7 +228,7 @@ public class RepackageMojo extends AbstractDependencyFilterMojo {
repackager
.
setMainClass
(
this
.
mainClass
);
if
(
this
.
layout
!=
null
)
{
getLog
().
info
(
"Layout: "
+
this
.
layout
);
repackager
.
setLayout
(
LayoutType
.
layout
(
this
.
layout
));
repackager
.
setLayout
(
this
.
layout
.
layout
(
));
}
return
repackager
;
}
...
...
@@ -308,6 +309,53 @@ public class RepackageMojo extends AbstractDependencyFilterMojo {
}
}
/**
* Archive layout types.
*/
public
enum
LayoutType
{
/**
* Jar Layout.
*/
JAR
(
new
Layouts
.
Jar
()),
/**
* War Layout.
*/
WAR
(
new
Layouts
.
War
()),
/**
* Zip Layout.
*/
ZIP
(
new
Layouts
.
Expanded
()),
/**
* Dir Layout.
*/
DIR
(
new
Layouts
.
Expanded
()),
/**
* Module Layout.
*/
MODULE
(
new
Layouts
.
Module
()),
/**
* No Layout.
*/
NONE
(
new
Layouts
.
None
());
private
final
Layout
layout
;
public
Layout
layout
()
{
return
this
.
layout
;
}
LayoutType
(
Layout
layout
)
{
this
.
layout
=
layout
;
}
}
private
static
class
LoggingRepackager
extends
Repackager
{
private
final
Log
log
;
...
...
spring-boot-tools/spring-boot-maven-plugin/src/site/apt/examples/custom-layout.apt.vm
deleted
100644 → 0
View file @
9fc8d611
-----
Use a custom layout
-----
Dave Syer
-----
2016-10-30
-----
Spring Boot repackages the jar file for this project using a custom
layout defined in the additional jar file, provided as a dependency
to the build plugin:
---
<project>
...
<build>
...
<plugins>
...
<plugin>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<layout>CUSTOM</layout>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>custom-layout</artifactId>
<version>0.0.1.BUILD-SNAPSHOT</version>
</dependency>
</dependencies>
...
</plugin>
...
</plugins>
...
</build>
...
</project>
---
The layout is provided as an implementation of <<LayoutFactory>>
(from spring-boot-loader-tools) listed in
<<META-INF/spring-factories>> inside the <<custom-layout>> jar.
spring-boot-tools/spring-boot-maven-plugin/src/site/apt/index.apt
View file @
97fee466
...
...
@@ -48,8 +48,6 @@ Spring Boot Maven Plugin
* {{{./examples/repackage-disable-attach.html}Local repackaged artifact}}
* {{{./examples/custom-layout.html}Custom layout}}
* {{{./examples/exclude-dependency.html}Exclude a dependency}}
* {{{./examples/run-debug.html}Debug the application}}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment