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
6df5e7af
Commit
6df5e7af
authored
Jan 23, 2020
by
Stephane Nicoll
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add integration tests for Maven plugin's build-image support
See gh-19830
parent
0a9fe654
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
214 additions
and
1 deletion
+214
-1
build.gradle
...t/spring-boot-tools/spring-boot-maven-plugin/build.gradle
+4
-1
BuildImageTests.java
.../java/org/springframework/boot/maven/BuildImageTests.java
+91
-0
pom.xml
...ugin/src/intTest/projects/build-image-custom-name/pom.xml
+34
-0
SampleApplication.java
...custom-name/src/main/java/org/test/SampleApplication.java
+28
-0
pom.xml
...oot-maven-plugin/src/intTest/projects/build-image/pom.xml
+29
-0
SampleApplication.java
...build-image/src/main/java/org/test/SampleApplication.java
+28
-0
No files found.
spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/build.gradle
View file @
6df5e7af
...
...
@@ -15,19 +15,22 @@ configurations {
dependencies
{
api
(
platform
(
project
(
":spring-boot-project:spring-boot-parent"
)))
api
(
project
(
":spring-boot-project:spring-boot-tools:spring-boot-buildpack-platform"
))
compileOnly
(
"org.apache.maven.plugin-tools:maven-plugin-annotations"
)
compileOnly
(
"org.sonatype.plexus:plexus-build-api"
)
implementation
(
project
(
":spring-boot-project:spring-boot-tools:spring-boot-buildpack-platform"
))
implementation
(
project
(
":spring-boot-project:spring-boot-tools:spring-boot-loader-tools"
))
implementation
(
"org.apache.maven.shared:maven-common-artifact-filters"
)
implementation
(
"org.apache.maven:maven-plugin-api"
)
intTestImplementation
(
platform
(
project
(
":spring-boot-project:spring-boot-parent"
)))
intTestImplementation
(
project
(
":spring-boot-project:spring-boot-tools:spring-boot-buildpack-platform"
))
intTestImplementation
(
project
(
":spring-boot-project:spring-boot-tools:spring-boot-test-support"
))
intTestImplementation
(
"org.apache.maven.shared:maven-invoker"
)
intTestImplementation
(
"org.assertj:assertj-core"
)
intTestImplementation
(
"org.junit.jupiter:junit-jupiter"
)
intTestImplementation
(
"org.testcontainers:testcontainers"
)
optional
(
platform
(
project
(
":spring-boot-project:spring-boot-parent"
)))
optional
(
"org.apache.maven.plugins:maven-shade-plugin"
)
...
...
spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/BuildImageTests.java
0 → 100644
View file @
6df5e7af
/*
* Copyright 2012-2020 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
*
* https://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
.
maven
;
import
java.io.File
;
import
java.io.IOException
;
import
org.junit.jupiter.api.TestTemplate
;
import
org.junit.jupiter.api.extension.ExtendWith
;
import
org.testcontainers.containers.GenericContainer
;
import
org.testcontainers.containers.wait.strategy.Wait
;
import
org.springframework.boot.buildpack.platform.docker.DockerApi
;
import
org.springframework.boot.buildpack.platform.docker.type.ImageName
;
import
org.springframework.boot.buildpack.platform.docker.type.ImageReference
;
import
org.springframework.boot.testsupport.testcontainers.DisabledIfDockerUnavailable
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
/**
* Integration tests for the Maven plugin's image support.
*
* @author Stephane Nicoll
*/
@ExtendWith
(
MavenBuildExtension
.
class
)
@DisabledIfDockerUnavailable
public
class
BuildImageTests
extends
AbstractArchiveIntegrationTests
{
@TestTemplate
void
whenBuildImageIsInvokedWithoutRepackageTheArchiveIsRepackagedOnTheFly
(
MavenBuild
mavenBuild
)
{
mavenBuild
.
project
(
"build-image"
).
goals
(
"package"
).
execute
((
project
)
->
{
File
jar
=
new
File
(
project
,
"target/build-image-0.0.1.BUILD-SNAPSHOT.jar"
);
assertThat
(
jar
).
isFile
();
File
original
=
new
File
(
project
,
"target/build-image-0.0.1.BUILD-SNAPSHOT.jar.original"
);
assertThat
(
original
).
doesNotExist
();
assertThat
(
buildLog
(
project
)).
contains
(
"Building image"
)
.
contains
(
"docker.io/library/build-image:0.0.1.BUILD-SNAPSHOT"
)
.
contains
(
"Successfully built image"
);
ImageReference
imageReference
=
ImageReference
.
of
(
ImageName
.
of
(
"build-image"
),
"0.0.1.BUILD-SNAPSHOT"
);
try
(
GenericContainer
<?>
container
=
new
GenericContainer
<>(
imageReference
.
toString
()))
{
container
.
waitingFor
(
Wait
.
forLogMessage
(
"Launched\\n"
,
1
)).
start
();
}
finally
{
removeImage
(
imageReference
);
}
});
}
@TestTemplate
void
whenBuildImageIsInvokedWihCustomImageName
(
MavenBuild
mavenBuild
)
{
mavenBuild
.
project
(
"build-image-custom-name"
).
goals
(
"package"
).
execute
((
project
)
->
{
File
jar
=
new
File
(
project
,
"target/build-image-custom-name-0.0.1.BUILD-SNAPSHOT.jar"
);
assertThat
(
jar
).
isFile
();
File
original
=
new
File
(
project
,
"target/build-image-custom-name-0.0.1.BUILD-SNAPSHOT.jar.original"
);
assertThat
(
original
).
doesNotExist
();
assertThat
(
buildLog
(
project
)).
contains
(
"Building image"
)
.
contains
(
"example.com/test/build-image:0.0.1.BUILD-SNAPSHOT"
).
contains
(
"Successfully built image"
);
ImageReference
imageReference
=
ImageReference
.
of
(
"example.com/test/build-image:0.0.1.BUILD-SNAPSHOT"
);
try
(
GenericContainer
<?>
container
=
new
GenericContainer
<>(
imageReference
.
toString
()))
{
container
.
waitingFor
(
Wait
.
forLogMessage
(
"Launched\\n"
,
1
)).
start
();
}
finally
{
removeImage
(
imageReference
);
}
});
}
private
void
removeImage
(
ImageReference
imageReference
)
{
try
{
new
DockerApi
().
image
().
remove
(
imageReference
,
false
);
}
catch
(
IOException
ex
)
{
throw
new
IllegalStateException
(
"Failed to remove docker image "
+
imageReference
,
ex
);
}
}
}
spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-custom-name/pom.xml
0 → 100644
View file @
6df5e7af
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<groupId>
org.springframework.boot.maven.it
</groupId>
<artifactId>
build-image-custom-name
</artifactId>
<version>
0.0.1.BUILD-SNAPSHOT
</version>
<properties>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
<maven.compiler.source>
@java.version@
</maven.compiler.source>
<maven.compiler.target>
@java.version@
</maven.compiler.target>
</properties>
<build>
<plugins>
<plugin>
<groupId>
@project.groupId@
</groupId>
<artifactId>
@project.artifactId@
</artifactId>
<version>
@project.version@
</version>
<executions>
<execution>
<goals>
<goal>
build-image
</goal>
</goals>
<configuration>
<image>
<name>
example.com/test/build-image:${project.version}
</name>
</image>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-custom-name/src/main/java/org/test/SampleApplication.java
0 → 100644
View file @
6df5e7af
/*
* Copyright 2012-2020 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
*
* https://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
.
test
;
public
class
SampleApplication
{
public
static
void
main
(
String
[]
args
)
throws
Exception
{
System
.
out
.
println
(
"Launched"
);
synchronized
(
args
)
{
args
.
wait
();
// Prevent exit"
}
}
}
spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image/pom.xml
0 → 100644
View file @
6df5e7af
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<groupId>
org.springframework.boot.maven.it
</groupId>
<artifactId>
build-image
</artifactId>
<version>
0.0.1.BUILD-SNAPSHOT
</version>
<properties>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
<maven.compiler.source>
@java.version@
</maven.compiler.source>
<maven.compiler.target>
@java.version@
</maven.compiler.target>
</properties>
<build>
<plugins>
<plugin>
<groupId>
@project.groupId@
</groupId>
<artifactId>
@project.artifactId@
</artifactId>
<version>
@project.version@
</version>
<executions>
<execution>
<goals>
<goal>
build-image
</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image/src/main/java/org/test/SampleApplication.java
0 → 100644
View file @
6df5e7af
/*
* Copyright 2012-2020 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
*
* https://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
.
test
;
public
class
SampleApplication
{
public
static
void
main
(
String
[]
args
)
throws
Exception
{
System
.
out
.
println
(
"Launched"
);
synchronized
(
args
)
{
args
.
wait
();
// Prevent exit"
}
}
}
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