Skip to content

Commit ebccdfb

Browse files
committed
improved documented for different dependency versions and added test for jar-with-dependencies
1 parent a2b455d commit ebccdfb

File tree

7 files changed

+236
-21
lines changed

7 files changed

+236
-21
lines changed

jekyll-www.mock-server.com/mock_server/_includes/creating_expectations.html

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,16 @@
5656
);</code></pre>
5757
</div>
5858

59-
<p>To use the Java client add the <strong>org.mock-server:mockserver-netty:5.13.1</strong> dependency. The <strong>shaded</strong> classifier can be used to reduce any conflicts with MockServer dependencies, for example in maven:</p>
59+
<p>To use the Java client add the <strong>org.mock-server:mockserver-client-java-no-dependencies:5.13.1</strong> dependency.
60+
61+
<p>For more details about the different dependency versions see the page on <a href="/where/maven_central.html#mockserver_client_java">Maven Central</a></p>
62+
63+
<p>for example in maven:</p>
6064

6165
<pre><code class="code xml">&lt;<span class="element">dependency</span>&gt;
6266
&lt;<span class="element">groupId</span>&gt;<span class="element_value">org.mock-server</span>&lt;/<span class="element">groupId</span>&gt;
63-
&lt;<span class="element">artifactId</span>&gt;<span class="element_value">mockserver-client-java</span>&lt;/<span class="element">artifactId</span>&gt;
67+
&lt;<span class="element">artifactId</span>&gt;<span class="element_value">mockserver-client-java-no-dependencies</span>&lt;/<span class="element">artifactId</span>&gt;
6468
&lt;<span class="element">version</span>&gt;<span class="element_value">RELEASE</span>&lt;/<span class="element">version</span>&gt;
65-
&lt;<span class="element">classifier</span>&gt;<span class="element_value">shaded</span>&lt;/<span class="element">classifier</span>&gt;
6669
&lt;/<span class="element">dependency</span>&gt;</code></pre>
6770

6871
<p>A <strong>request matcher expectation</strong> may contain:</p>

jekyll-www.mock-server.com/mock_server/_includes/running_mock_server_detail.html

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -164,16 +164,17 @@ <h2>Maven Plugin</h2>
164164

165165
<h2>Client API&nbsp;&nbsp;-&nbsp;&nbsp;starting and stopping</h2>
166166

167-
<p>Use the client API to run MockServer programmatically.</p>
167+
<p>Use the client API to run or interact with MockServer programmatically.</p>
168168

169-
<p>First add the following maven dependencies:</p>
169+
<p>For more details about the different dependency versions see the page on <a href="/where/maven_central.html#mockserver_netty">Maven Central</a></p>
170+
171+
<p>For example add the following maven dependency:</p>
170172

171173
<pre><code class="code xml">&lt;!-- mockserver --&gt;
172174
&lt;<span class="element">dependency</span>&gt;
173175
&lt;<span class="element">groupId</span>&gt;<span class="element_value">org.mock-server</span>&lt;<span class="element">/groupId</span>&gt;
174-
&lt;<span class="element">artifactId</span>&gt;<span class="element_value">mockserver-netty</span>&lt;<span class="element">/artifactId</span>&gt;
176+
&lt;<span class="element">artifactId</span>&gt;<span class="element_value">mockserver-netty-no-dependencies</span>&lt;<span class="element">/artifactId</span>&gt;
175177
&lt;<span class="element">version</span>&gt;<span class="element_value">5.13.1</span>&lt;<span class="element">/version</span>&gt;
176-
&lt;<span class="element">classifier</span>&gt;<span class="element_value">shaded</span>&lt;/<span class="element">classifier</span>&gt;
177178
&lt;<span class="element">/dependency</span>&gt;</code></pre>
178179

179180
<p>To start the server or proxy create a client, for example by using one of the start factory methods <span class="inline_code">ClientAndServer.startClientAndServer</span> as follows:</p>
@@ -219,7 +220,7 @@ <h2>Running MockServer via a JUnit 4 @Rule</h2>
219220

220221
<pre class="prettyprint lang-xml code"><code class="code">&lt;dependency&gt;
221222
&lt;groupId&gt;org.mock-server&lt;/groupId&gt;
222-
&lt;artifactId&gt;mockserver-junit-rule&lt;/artifactId&gt;
223+
&lt;artifactId&gt;mockserver-junit-rule-no-dependencies&lt;/artifactId&gt;
223224
&lt;version&gt;5.13.1&lt;/version&gt;
224225
&lt;/dependency&gt;</code></pre>
225226

@@ -278,7 +279,7 @@ <h2>Running MockServer via a JUnit 5 Test Extension</h2>
278279

279280
<pre class="prettyprint lang-xml code"><code class="code">&lt;dependency&gt;
280281
&lt;groupId&gt;org.mock-server&lt;/groupId&gt;
281-
&lt;artifactId&gt;mockserver-junit-jupiter&lt;/artifactId&gt;
282+
&lt;artifactId&gt;mockserver-junit-jupiter-no-dependencies&lt;/artifactId&gt;
282283
&lt;version&gt;5.13.1&lt;/version&gt;
283284
&lt;/dependency&gt;</code></pre>
284285

jekyll-www.mock-server.com/where/maven_central.html

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ <h2>Maven Central &nbsp;&nbsp;<a target="_blank" href="https://search.maven.org/
1616
<p>Maven Central contains the following released MockServer artifacts:</p>
1717

1818
<ul>
19+
<a id="mockserver_netty" class="anchor" href="#mockserver_netty">&nbsp;</a>
1920
<li><a target="_blank" href="https://search.maven.org/#search%7Cga%7C1%7Cmockserver-netty">mockserver-netty</a> - a web server for mocking and proxying using Netty
2021

2122
<p>Add to a maven build pom.xml as follows:</p>
@@ -24,9 +25,8 @@ <h2>Maven Central &nbsp;&nbsp;<a target="_blank" href="https://search.maven.org/
2425
...
2526
&lt;<span class="element">dependency</span>&gt;
2627
&lt;<span class="element">groupId</span>&gt;<span class="element_value">org.mock-server</span>&lt;/<span class="element">groupId</span>&gt;
27-
&lt;<span class="element">artifactId</span>&gt;<span class="element_value">mockserver-netty</span>&lt;/<span class="element">artifactId</span>&gt;
28+
&lt;<span class="element">artifactId</span>&gt;<span class="element_value">mockserver-netty-no-dependencies</span>&lt;/<span class="element">artifactId</span>&gt;
2829
&lt;<span class="element">version</span>&gt;<span class="element_value">RELEASE</span>&lt;/<span class="element">version</span>&gt;
29-
&lt;<span class="element">classifier</span>&gt;<span class="element_value">shaded</span>&lt;/<span class="element">classifier</span>&gt;
3030
&lt;/<span class="element">dependency</span>&gt;
3131
...
3232
&lt;<span class="element">dependencies</span>&gt;</code></pre>
@@ -35,13 +35,20 @@ <h2>Maven Central &nbsp;&nbsp;<a target="_blank" href="https://search.maven.org/
3535

3636
<pre><code class="code"><span class="final">dependencies</span> {
3737
...
38-
<span class="final">testImplementation</span>(<span class="string_literal">"org.mock-server:mockserver-netty:5.13.1"</span>)
38+
<span class="final">testImplementation</span>(<span class="string_literal">"org.mock-server:mockserver-netty-no-dependencies:5.13.1"</span>)
3939
...
40-
}</code></pre></li>
40+
}</code></pre>
4141

42-
<li><a target="_blank" href="https://search.maven.org/#search%7Cga%7C1%7Cmockserver-netty">mockserver-netty:shaded</a> - as above using Netty that includes all dependencies are bundled into the jar file, this artifact
43-
<a target="_blank" href="https://search.maven.org/remotecontent?filepath=org/mock-server/mockserver-netty/5.13.1/mockserver-netty-5.13.1-shaded.jar">can be downloaded</a>.
44-
</li>
42+
<p>The following versions are available for <strong>mockserver-netty</strong> in Maven Central. These dependencies work for Maven, Gradle, Scala SBT, Apache Ivy, etc</p>
43+
44+
<ul>
45+
<li><strong>org.mock-server:mockserver-netty-no-dependencies:5.13.1</strong> - MockServer compiled code and transitive dependencies bundled into a single jar, with packages for most transitive dependencies being updated to avoid clashes with dependencies from projects importing MockServer. This has no transitive dependencies and so is the recommended best option.</li>
46+
<li><strong>org.mock-server:mockserver-netty:5.13.1</strong> - only MockServer compiled code with transitive dependencies pulled in by Maven, Gradle, etc. As per normal Maven or Ivy dependencies this includes transitive dependencies (in its pom.xml) which would be pulled in by Maven, Gradle, Ivy, SBT, etc unless explicitly excluded.</li>
47+
<li><strong>org.mock-server:mockserver-netty:5.13.1:shaded</strong> - MockServer compiled code and transitive dependencies bundled into a single jar, with packages for most transitive dependencies being updated to avoid clashes with dependencies from projects importing MockServer. Because classifiers all use the same pom.xml this library still includes transitive dependencies (in its pom.xml) which would be pulled in by Maven, Gradle, Ivy, SBT, etc unless explicitly excluded. Use the <strong>org.mock-server:mockserver-netty-no-dependencies:5.13.1</strong> dependencies to avoid the transitive dependencies.</li>
48+
<li><strong>org.mock-server:mockserver-netty:5.13.1:jar-with-dependencies</strong> - MockServer compiled code and transitive dependencies bundled into a single jar. Because classifiers all use the same pom.xml this library still includes transitive dependencies (in its pom.xml) which would be pulled in by Maven, Gradle, Ivy, SBT, etc unless explicitly excluded. Use the <strong>org.mock-server:mockserver-netty-no-dependencies:5.13.1</strong> dependencies to avoid the transitive dependencies.</li>
49+
</ul>
50+
51+
</li>
4552

4653
<li><a target="_blank" href="https://search.maven.org/#search%7Cga%7C1%7Cmockserver-war">mockserver-war</a> - a deployable WAR for mocking that can be deployed to any JEE web server, this artifact
4754
<a target="_blank" href="https://search.maven.org/remotecontent?filepath=org/mock-server/mockserver-war/5.13.1/mockserver-war-5.13.1.war">can be downloaded</a>.
@@ -64,25 +71,35 @@ <h2>Maven Central &nbsp;&nbsp;<a target="_blank" href="https://search.maven.org/
6471
&lt;<span class="element">pipeLogToConsole</span>&gt;<span class="element_value">true</span>&lt;/<span class="element">pipeLogToConsole</span>&gt;
6572
&lt;/<span class="element">configuration</span>&gt;
6673
&lt;/<span class="element">plugin</span>&gt;</code></pre>
67-
74+
<a id="mockserver_client_java" class="anchor" href="#mockserver_client_java">&nbsp;</a>
6875
<li><a target="_blank" href="https://search.maven.org/#search%7Cga%7C1%7Cmockserver-client-java">mockserver-client-java</a> - a Java client to communicate with both the server and the proxy
6976

7077
<p>Add to a maven build pom.xml as follows:</p>
7178

7279
<pre><code class="code xml">&lt;<span class="element">dependency</span>&gt;
7380
&lt;<span class="element">groupId</span>&gt;<span class="element_value">org.mock-server</span>&lt;/<span class="element">groupId</span>&gt;
74-
&lt;<span class="element">artifactId</span>&gt;<span class="element_value">mockserver-client-java</span>&lt;/<span class="element">artifactId</span>&gt;
81+
&lt;<span class="element">artifactId</span>&gt;<span class="element_value">mockserver-client-java-no-dependencies</span>&lt;/<span class="element">artifactId</span>&gt;
7582
&lt;<span class="element">version</span>&gt;<span class="element_value">RELEASE</span>&lt;/<span class="element">version</span>&gt;
76-
&lt;<span class="element">classifier</span>&gt;<span class="element_value">shaded</span>&lt;/<span class="element">classifier</span>&gt;
7783
&lt;/<span class="element">dependency</span>&gt;</code></pre>
7884

7985
<p>Add to a gradle build build.gradle as follows:</p>
8086

8187
<pre><code class="code"><span class="final">dependencies</span> {
8288
...
83-
<span class="final">testImplementation</span>(<span class="string_literal">"org.mock-server:mockserver-client-java:5.13.1:shaded"</span>)
89+
<span class="final">testImplementation</span>(<span class="string_literal">"org.mock-server:mockserver-client-java-no-dependencies:5.13.1"</span>)
8490
...
85-
}</code></pre></li>
91+
}</code></pre>
92+
93+
<p>The following versions are available for the Java client in Maven Central. These dependencies work for Maven, Gradle, Scala SBT, Apache Ivy, etc</p>
94+
95+
<ul>
96+
<li><strong>org.mock-server:mockserver-client-java-no-dependencies:5.13.1</strong> - MockServer compiled code and transitive dependencies bundled into a single jar, with packages for most transitive dependencies being updated to avoid clashes with dependencies from projects importing MockServer. This has no transitive dependencies and so is the recommended best option.</li>
97+
<li><strong>org.mock-server:mockserver-client-java:5.13.1</strong> - only MockServer compiled code with transitive dependencies pulled in by Maven, Gradle, etc. As per normal Maven or Ivy dependencies this includes transitive dependencies (in its pom.xml) which would be pulled in by Maven, Gradle, Ivy, SBT, etc unless explicitly excluded.</li>
98+
<li><strong>org.mock-server:mockserver-client-java:5.13.1:shaded</strong> - MockServer compiled code and transitive dependencies bundled into a single jar, with packages for most transitive dependencies being updated to avoid clashes with dependencies from projects importing MockServer. Because classifiers all use the same pom.xml this library still includes transitive dependencies (in its pom.xml) which would be pulled in by Maven, Gradle, Ivy, SBT, etc unless explicitly excluded. Use the <strong>org.mock-server:mockserver-client-java-no-dependencies:5.13.1</strong> dependencies to avoid the transitive dependencies.</li>
99+
<li><strong>org.mock-server:mockserver-client-java:5.13.1:jar-with-dependencies</strong> - MockServer compiled code and transitive dependencies bundled into a single jar. Because classifiers all use the same pom.xml this library still includes transitive dependencies (in its pom.xml) which would be pulled in by Maven, Gradle, Ivy, SBT, etc unless explicitly excluded. Use the <strong>org.mock-server:mockserver-client-java-no-dependencies:5.13.1</strong> dependencies to avoid the transitive dependencies.</li>
100+
</ul>
101+
102+
</li>
86103

87104
<li><a target="_blank" href="https://search.maven.org/#search%7Cga%7C1%7Cmockserver-client-java">mockserver-junit-rule</a> - a <a href="/mock_server/running_mock_server.html#junit_rule">Junit 4 @Rule</a> that starts MockServer (<strong>for both mocking and proxying</strong>) on a free port before the any test runs and stops MockServer after all tests have completed.</li>
88105

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
invoker.goals=clean test
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xmlns="http://maven.apache.org/POM/4.0.0"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<groupId>org.mock-server.integration-test</groupId>
8+
<artifactId>netty-shaded-dependency</artifactId>
9+
<version>1.0-SNAPSHOT</version>
10+
11+
<properties>
12+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
13+
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
14+
<maven.compiler.source>1.8</maven.compiler.source>
15+
<maven.compiler.target>1.8</maven.compiler.target>
16+
</properties>
17+
18+
<dependencies>
19+
<dependency>
20+
<groupId>org.mock-server</groupId>
21+
<artifactId>mockserver-netty</artifactId>
22+
<version>@mockserver.version@</version>
23+
<classifier>jar-with-dependencies</classifier>
24+
</dependency>
25+
26+
<!-- test -->
27+
<dependency>
28+
<groupId>org.mock-server</groupId>
29+
<artifactId>mockserver-integration-testing</artifactId>
30+
<version>@mockserver.version@</version>
31+
<scope>test</scope>
32+
</dependency>
33+
<dependency>
34+
<groupId>junit</groupId>
35+
<artifactId>junit</artifactId>
36+
<version>4.13.2</version>
37+
<scope>test</scope>
38+
</dependency>
39+
<dependency>
40+
<groupId>org.hamcrest</groupId>
41+
<artifactId>hamcrest</artifactId>
42+
<version>2.2</version>
43+
<scope>test</scope>
44+
</dependency>
45+
</dependencies>
46+
47+
<build>
48+
<plugins>
49+
<!-- update plugin versions to non-missing versions -->
50+
<plugin>
51+
<groupId>org.apache.maven.plugins</groupId>
52+
<artifactId>maven-clean-plugin</artifactId>
53+
<version>3.1.0</version>
54+
</plugin>
55+
<plugin>
56+
<groupId>org.apache.maven.plugins</groupId>
57+
<artifactId>maven-compiler-plugin</artifactId>
58+
<version>3.9.0</version>
59+
</plugin>
60+
<!-- skip jar creation -->
61+
<plugin>
62+
<groupId>org.apache.maven.plugins</groupId>
63+
<artifactId>maven-jar-plugin</artifactId>
64+
<version>3.2.2</version>
65+
<executions>
66+
<execution>
67+
<id>default-jar</id>
68+
<phase>none</phase>
69+
<configuration>
70+
<finalName>unwanted</finalName>
71+
<classifier>unwanted</classifier>
72+
</configuration>
73+
</execution>
74+
</executions>
75+
</plugin>
76+
<!-- run tests -->
77+
<plugin>
78+
<groupId>org.apache.maven.plugins</groupId>
79+
<artifactId>maven-surefire-plugin</artifactId>
80+
<version>2.22.2</version>
81+
<configuration>
82+
<!-- allow debugging tests -->
83+
<forkCount>0</forkCount>
84+
<includes>
85+
<include>**/*Test.java</include>
86+
</includes>
87+
<properties>
88+
<property>
89+
<name>listener</name>
90+
<value>org.mockserver.test.PrintOutCurrentTestRunListener</value>
91+
</property>
92+
</properties>
93+
</configuration>
94+
</plugin>
95+
</plugins>
96+
</build>
97+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package org.mockserver;
2+
3+
import org.junit.AfterClass;
4+
import org.junit.Before;
5+
import org.junit.BeforeClass;
6+
import org.mockserver.integration.ClientAndServer;
7+
import org.mockserver.testing.integration.mock.AbstractBasicMockingIntegrationTest;
8+
9+
/**
10+
* @author jamesdbloom
11+
*/
12+
public class ClientAndServerMockTest extends AbstractBasicMockingIntegrationTest {
13+
14+
@BeforeClass
15+
public static void createClient() {
16+
mockServerClient = ClientAndServer.startClientAndServer();
17+
}
18+
19+
@AfterClass
20+
public static void stopServer() {
21+
if (mockServerClient != null) {
22+
mockServerClient.stop();
23+
}
24+
}
25+
26+
@Before
27+
public void clearServer() {
28+
mockServerClient.reset();
29+
}
30+
31+
@Override
32+
public int getServerPort() {
33+
return mockServerClient.getPort();
34+
}
35+
36+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package org.mockserver;
2+
3+
import org.junit.AfterClass;
4+
import org.junit.Before;
5+
import org.junit.BeforeClass;
6+
import org.mockserver.client.MockServerClient;
7+
import org.mockserver.echo.http.EchoServer;
8+
import org.mockserver.integration.ClientAndServer;
9+
import org.mockserver.testing.integration.proxy.AbstractProxyIntegrationTest;
10+
11+
/**
12+
* @author jamesdbloom
13+
*/
14+
public class ClientAndServerProxyTest extends AbstractProxyIntegrationTest {
15+
16+
private static EchoServer echoServer;
17+
private static ClientAndServer mockServerClient;
18+
19+
@BeforeClass
20+
public static void startServer() {
21+
echoServer = new EchoServer(false);
22+
mockServerClient = ClientAndServer.startClientAndServer();
23+
}
24+
25+
@AfterClass
26+
public static void stopServer() {
27+
if (echoServer != null) {
28+
echoServer.stop();
29+
}
30+
if (mockServerClient != null) {
31+
mockServerClient.stop();
32+
}
33+
}
34+
35+
@Before
36+
public void resetProxy() {
37+
mockServerClient.reset();
38+
}
39+
40+
@Override
41+
public int getProxyPort() {
42+
return mockServerClient.getLocalPort();
43+
}
44+
45+
@Override
46+
public MockServerClient getMockServerClient() {
47+
return mockServerClient;
48+
}
49+
50+
@Override
51+
public int getServerPort() {
52+
return echoServer.getPort();
53+
}
54+
55+
@Override
56+
public EchoServer getEchoServer() {
57+
return echoServer;
58+
}
59+
60+
}

0 commit comments

Comments
 (0)