image:https://spring.io/badges/spring-ws/ga.svg["Spring Web Services", link="https://spring.io/projects/spring-ws#learn"]
image:https://spring.io/badges/spring-ws/snapshot.svg["Spring Web Services", link="https://spring.io/projects/spring-ws#learn"]

image:https://jenkins.spring.io/buildStatus/icon?job=spring-ws%2Fmaster&subject=master[link=https://jenkins.spring.io/view/SpringWebServices/job/spring-ws/]
image:https://jenkins.spring.io/buildStatus/icon?job=spring-ws%2F2.x&subject=2.x[link=https://jenkins.spring.io/view/SpringWebServices/job/spring-ws/]

= 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[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

1. Create a new release (on the main branch).
+
----
% ci/create-release.sh <release version> <next snapshot version>
----
+
2. With the release tagged, push the tagged version to the release branch.
+
----
% git checkout -b release-2.x
% git reset --hard <tag>
% git push -f origin release-2.x
----

NOTE: You can chain the previous set of commands together using `&&`.

The pipeline will build and release the "release" branch. It will also build a new a new snapshot and stage it on artifactory.

=== Running CI tasks locally

Since the pipeline uses Docker, it's easy to:

* Debug what went wrong on your local machine.
* Test out a 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 essentially run what Jenkins does on your local machine.

IMPORTANT: To do this you must have Docker installed on your machine.

1. `docker run -it --mount type=bind,source="$(pwd)",target=/spring-ws-github adoptopenjdk/openjdk8:latest /bin/bash`
+
This will launch the Docker image and mount your source code at `spring-ws-github`.
+
2. `cd spring-ws-github`
+
Next, run the `test.sh` script from inside the container:
+
2. `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:

1. `docker run -it --mount type=bind,source="$(pwd)",target=/spring-ws-github adoptopenjdk/openjdk8:latest /bin/bash`
+
This will launch the Docker image and mount your source code at `spring-ws-github` and the temporary
artifactory output directory at `spring-ws-artifactory`.
+
Next, run the `build.sh` script from inside the container:
+
2. `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 link:CODE_OF_CONDUCT.adoc[code of conduct].
By participating, you  are expected to uphold this code. Please report unacceptable behavior to spring-code-of-conduct@pivotal.io.

= Spring Web Services Project Site

You can find the documentation, issue management, support, samples, and guides for using Spring Web Services at http://projects.spring.io/spring-ws/

== Documentation

See the current http://docs.spring.io/spring-ws/docs/current/api/[Javadoc] and http://docs.spring.io/spring-ws/docs/current/reference/htmlsingle/[reference docs].

== Issue Tracking

Spring Web Services uses https://jira.spring.io/browse/SWS[JIRA] for issue tracking purposes

== License

Spring Web Services is http://www.apache.org/licenses/LICENSE-2.0.html[Apache 2.0 licensed].