Spring Web Services
Spring Web Services is a product of the Spring community focused on creating document-driven Web services. Spring Web Services aims to facilitate contract-first SOAP service development, allowing for the creation of flexible web services using one of the many ways to manipulate XML payloads.
Installation
Releases of Spring Web Services are available for download from Maven Central, as well as our own repository, https://repo.spring.io/release.
Please visit https://spring.io/projects/spring-ws to get the right Maven/Gradle settings for your selected version.
Building Spring Web Services
-
Run
./mvnw clean package
This will generate the artifacts.
You can also import the project into your IDE.
Making a release
Before you make a release, follow this checklist:
-
Are you using the latest milestone/release candidate/release of Spring Framework? If not, upgrade. (Don’t forget
spring-buildsnapshot
profile.) -
Are you using the latest milestone/release candidate/release of Spring Security? If not, upgrade. (Don’t forget
spring-buildsnapshot
profile.) -
Are you setup with the right version of Java? If not switch. (Java 17 for 4.0+, Java 8 for everything else.)
-
Is it time to switch from milestone to release candidate? Or from release candidate to release?
Note
|
The actual building and releasing is done on CI inside a Docker container, ensuring little risk between versions of Java. But part of the release process requires a local check, which DOES depend upon your environment. |
-
Create a new release (on the main branch).
% ci/create-release.sh <release version> <next snapshot version>
-
With the release tagged, update the release branch to the newly created tag.
% git checkout -b release % git reset --hard <tag>
-
Verify this builds locally and passes all tests.
% ./mvnw clean package % ./mvnw -Pspring-buildsnapshot clean package
-
Push the tagged version to the release branch.
% git push -f origin release
-
For milestones and release candidates, verify the artifacts on artifactory.
-
For releases, login to maven central.
-
Verify the release.
-
Close the repository.
-
Release the repository.
-
-
Announce on VMware Slack.
-
Once completed, push the
main
branch for next version’s snapshots.% git checkout main % git push % git push --tags
The pipeline will build and release the "release" branch on artifactory for milestones and RCs. For releases, they are sent to maven central.
Once the release is completed and tags are pushed:
-
Close the Github issue milestone.
-
Run the
ChangeLogCreator
report against that milestone. -
Go to https://github.com/spring-projects/spring-ws/releases.
-
Find that tag and create a new release. Use the output from
ChangeLogCreator
as the content for the release report. -
Announce on #spring-release.
Running CI tasks locally
Since the pipeline uses Docker, it’s easy to:
-
Debug what went wrong on your local machine.
-
Test out a tweak to your
test.sh
script before sending it out. -
Experiment against a new image before submitting your pull request.
All of these use cases are great reasons to know what Jenkins does, on your local machine.
Important
|
To do this you must have Docker installed on your machine. |
-
docker run -it --mount type=bind,source="$(pwd)",target=/spring-ws-github openjdk:17-bullseye /bin/bash
This will launch the Docker image and mount your source code at
spring-ws-github
. -
cd spring-ws-github
Next, run the
test.sh
script from inside the container: -
PROFILE=none ci/test.sh
Since the container is binding to your source, you can make edits from your IDE and continue to run build jobs.
If you need to test the build.sh
script, then do this:
-
docker run -it --mount type=bind,source="$(pwd)",target=/spring-ws-github openjdk:17-bullseye /bin/bash
This will launch the Docker image and mount your source code at
spring-ws-github
and the temporary artifactory output directory atspring-ws-artifactory
.Next, run the
build.sh
script from inside the container: -
ci/build.sh
Important
|
build.sh will attempt to push to Artifactory. If you don’t supply credentials, it will fail.
|
Note
|
Docker containers can eat up disk space fast! From time to time, run docker system prune to clean out old images.
|
Code of Conduct
This project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to [email protected].
Spring Web Services Project Site
You can find the documentation, issue management, support, samples, and guides for using Spring Web Services at https://spring.io/projects/spring-ws/
Documentation
See the current Javadoc and reference docs.
Issue Tracking
Spring Web Services uses Github for issue tracking purposes.
License
Spring Web Services is Apache 2.0 licensed.