I've got some content in my pom.xml for this. The maven-shade-plugin will add a manifest entry to expect the bouncycastle provider jar at `lib-signed/bcprov-jdk15on.jar` and you'll have to put it there when you deploy.
Installing the JCE provider on the machine is easier. However, it's a pain when you want to update the bouncycastle version as part of a deploy with rollback. Also, that bouncycastle version would apply to all java programs on that jre.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>shaded</shadedClassifierName>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Class-Path>lib-signed/bcprov-jdk15on.jar</Class-Path>
<Main-Class>${project.mainclass}</Main-Class>
</manifestEntries>
</transformer>
</transformers>
<!-- signatures from foreign jars are bad news -->
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
<artifactSet>
<excludes>
<exclude>org.bouncycastle:bcprov-jdk15on</exclude>
</excludes>
</artifactSet>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib-signed</outputDirectory>
<includeArtifactIds>bcprov-jdk15on</includeArtifactIds>
<stripVersion>true</stripVersion>
</configuration>
</execution>
</executions>
</plugin>