diff --git a/README.md b/README.md index dbbdb42..fda92eb 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,45 @@ This is a simple Maven project. Build with: mvn verify ``` +## Shaded artifact + +Besides the regular thin JAR, the build attaches a **shaded** artifact (classifier `shaded`) in which all +dependencies (Apache CXF, HttpClient, JAXB, SAAJ, smbj, etc.) are relocated under +`org.metricshub.winrm.shaded.*` and their `META-INF/services` registrations are renamed accordingly. +Use it to embed winrm-java in applications where its dependency tree could otherwise clash with — or leak +`ServiceLoader`/JAXP registrations into — the host classpath (e.g., the shaded JAR deliberately does *not* +register Woodstox as the JVM-wide StAX implementation). + +Only two dependencies are intentionally left unshaded and must be provided by the consumer: +`org.slf4j:slf4j-api` (so the host controls logging) and `org.bouncycastle:bcprov-jdk18on` +(a signed JCE provider that must not be repackaged). + +```xml + + org.metricshub + winrm-java + ${winrm-java.version} + shaded + + + + * + * + + + + + org.slf4j + slf4j-api + 2.0.17 + + + org.bouncycastle + bcprov-jdk18on + 1.79 + +``` + ## Release instructions The artifact is deployed to Sonatype's [Maven Central](https://central.sonatype.com/). diff --git a/pom.xml b/pom.xml index 36510ec..a586727 100644 --- a/pom.xml +++ b/pom.xml @@ -204,6 +204,218 @@ + + + org.apache.maven.plugins + maven-shade-plugin + 3.6.0 + + + package + + shade + + + true + shaded + false + + + + org.slf4j:slf4j-api + org.bouncycastle:* + org.jspecify:* + org.apiguardian:* + + com.sun.xml.ws:* + com.sun.xml.bind:* + com.sun.xml.fastinfoset:* + com.sun.xml.stream.buffer:* + org.glassfish.gmbal:* + org.glassfish.ha:* + org.glassfish.external:* + + + jakarta.mail:* + org.eclipse.angus:angus-mail + + + + + org.apache.cxf + org.metricshub.winrm.shaded.org.apache.cxf + + + org.apache.neethi + org.metricshub.winrm.shaded.org.apache.neethi + + + org.apache.ws.commons.schema + org.metricshub.winrm.shaded.org.apache.ws.commons.schema + + + org.apache.commons.logging + org.metricshub.winrm.shaded.org.apache.commons.logging + + + org.apache.commons.codec + org.metricshub.winrm.shaded.org.apache.commons.codec + + + org.apache.http + org.metricshub.winrm.shaded.org.apache.http + + + org.apache.xml.resolver + org.metricshub.winrm.shaded.org.apache.xml.resolver + + + javax.wsdl + org.metricshub.winrm.shaded.javax.wsdl + + + com.ibm.wsdl + org.metricshub.winrm.shaded.com.ibm.wsdl + + + com.ctc.wstx + org.metricshub.winrm.shaded.com.ctc.wstx + + + org.codehaus.stax2 + org.metricshub.winrm.shaded.org.codehaus.stax2 + + + com.sun.xml + org.metricshub.winrm.shaded.com.sun.xml + + + com.sun.istack + org.metricshub.winrm.shaded.com.sun.istack + + + com.oracle.webservices + org.metricshub.winrm.shaded.com.oracle.webservices + + + org.glassfish + org.metricshub.winrm.shaded.org.glassfish + + + org.jvnet + org.metricshub.winrm.shaded.org.jvnet + + + jakarta.activation + org.metricshub.winrm.shaded.jakarta.activation + + + jakarta.annotation + org.metricshub.winrm.shaded.jakarta.annotation + + + jakarta.mail + org.metricshub.winrm.shaded.jakarta.mail + + + jakarta.jws + org.metricshub.winrm.shaded.jakarta.jws + + + jakarta.xml.bind + org.metricshub.winrm.shaded.jakarta.xml.bind + + + jakarta.xml.soap + org.metricshub.winrm.shaded.jakarta.xml.soap + + + jakarta.xml.ws + org.metricshub.winrm.shaded.jakarta.xml.ws + + + org.eclipse.angus + org.metricshub.winrm.shaded.org.eclipse.angus + + + com.hierynomus + org.metricshub.winrm.shaded.com.hierynomus + + + net.engio + org.metricshub.winrm.shaded.net.engio + + + org.objectweb.asm + org.metricshub.winrm.shaded.org.objectweb.asm + + + com.oracle.xmlns.webservices + org.metricshub.winrm.shaded.com.oracle.xmlns.webservices + + + org.xmlsoap.schemas + org.metricshub.winrm.shaded.org.xmlsoap.schemas + + + + + *:* + + module-info.class + META-INF/versions/*/module-info.class + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + META-INF/DEPENDENCIES + + META-INF/services/javax.xml.stream.* + + META-INF/services/jakarta.servlet.* + + META-INF/spring.* + OSGI-INF/** + + META-INF/cxf/bus-extensions.txt + + + + + + + + + META-INF/cxf/bus-extensions.txt + src/main/shade/bus-extensions.txt + + + + true + + + + false + + + + + + + diff --git a/src/main/shade/bus-extensions.txt b/src/main/shade/bus-extensions.txt new file mode 100644 index 0000000..2dbf461 --- /dev/null +++ b/src/main/shade/bus-extensions.txt @@ -0,0 +1,52 @@ +org.metricshub.winrm.shaded.org.apache.cxf.bus.managers.PhaseManagerImpl:org.metricshub.winrm.shaded.org.apache.cxf.phase.PhaseManager:true +org.metricshub.winrm.shaded.org.apache.cxf.bus.managers.WorkQueueManagerImpl:org.metricshub.winrm.shaded.org.apache.cxf.workqueue.WorkQueueManager:true +org.metricshub.winrm.shaded.org.apache.cxf.bus.managers.CXFBusLifeCycleManager:org.metricshub.winrm.shaded.org.apache.cxf.buslifecycle.BusLifeCycleManager:true +org.metricshub.winrm.shaded.org.apache.cxf.bus.managers.ServerRegistryImpl:org.metricshub.winrm.shaded.org.apache.cxf.endpoint.ServerRegistry:true +org.metricshub.winrm.shaded.org.apache.cxf.bus.managers.EndpointResolverRegistryImpl:org.metricshub.winrm.shaded.org.apache.cxf.endpoint.EndpointResolverRegistry:true +org.metricshub.winrm.shaded.org.apache.cxf.bus.managers.HeaderManagerImpl:org.metricshub.winrm.shaded.org.apache.cxf.headers.HeaderManager:true +org.metricshub.winrm.shaded.org.apache.cxf.service.factory.FactoryBeanListenerManager::true +org.metricshub.winrm.shaded.org.apache.cxf.bus.managers.ServerLifeCycleManagerImpl:org.metricshub.winrm.shaded.org.apache.cxf.endpoint.ServerLifeCycleManager:true +org.metricshub.winrm.shaded.org.apache.cxf.bus.managers.ClientLifeCycleManagerImpl:org.metricshub.winrm.shaded.org.apache.cxf.endpoint.ClientLifeCycleManager:true +org.metricshub.winrm.shaded.org.apache.cxf.bus.resource.ResourceManagerImpl:org.metricshub.winrm.shaded.org.apache.cxf.resource.ResourceManager:true +org.metricshub.winrm.shaded.org.apache.cxf.catalog.OASISCatalogManager:org.metricshub.winrm.shaded.org.apache.cxf.catalog.OASISCatalogManager:true +org.metricshub.winrm.shaded.org.apache.cxf.common.util.ASMHelperImpl:org.metricshub.winrm.shaded.org.apache.cxf.common.util.ASMHelper:true +org.metricshub.winrm.shaded.org.apache.cxf.common.spi.ClassLoaderProxyService:org.metricshub.winrm.shaded.org.apache.cxf.common.spi.ClassLoaderService:true +org.metricshub.winrm.shaded.org.apache.cxf.io.DelayedCachedOutputStreamCleaner:org.metricshub.winrm.shaded.org.apache.cxf.io.CachedOutputStreamCleaner:true +org.metricshub.winrm.shaded.org.apache.cxf.binding.soap.SoapBindingFactory::true +org.metricshub.winrm.shaded.org.apache.cxf.binding.soap.SoapTransportFactory::true +org.metricshub.winrm.shaded.org.apache.cxf.binding.xml.XMLBindingFactory::true +org.metricshub.winrm.shaded.org.apache.cxf.binding.xml.wsdl11.XMLWSDLExtensionLoader::true:true +org.metricshub.winrm.shaded.org.apache.cxf.jaxb.WrapperHelperProxyService:org.metricshub.winrm.shaded.org.apache.cxf.jaxb.WrapperHelperCreator:true +org.metricshub.winrm.shaded.org.apache.cxf.jaxb.FactoryClassProxyService:org.metricshub.winrm.shaded.org.apache.cxf.jaxb.FactoryClassCreator:true +org.metricshub.winrm.shaded.org.apache.cxf.jaxws.context.WebServiceContextResourceResolver::true +org.metricshub.winrm.shaded.org.apache.cxf.jaxws.spi.WrapperClassCreatorProxyService:org.metricshub.winrm.shaded.org.apache.cxf.jaxws.spi.WrapperClassCreator:true +org.metricshub.winrm.shaded.org.apache.cxf.jaxws.spi.WrapperClassNamingConvention$DefaultWrapperClassNamingConvention:org.metricshub.winrm.shaded.org.apache.cxf.jaxws.spi.WrapperClassNamingConvention:true +org.metricshub.winrm.shaded.org.apache.cxf.endpoint.dynamic.ExceptionClassCreatorProxyService:org.metricshub.winrm.shaded.org.apache.cxf.endpoint.dynamic.ExceptionClassCreator:true +org.metricshub.winrm.shaded.org.apache.cxf.transport.http.HTTPTransportFactory::true +org.metricshub.winrm.shaded.org.apache.cxf.transport.http.HTTPWSDLExtensionLoader::true:true +org.metricshub.winrm.shaded.org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder::true:true +org.metricshub.winrm.shaded.org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder::true:true +org.metricshub.winrm.shaded.org.apache.cxf.transport.http.policy.NoOpPolicyInterceptorProvider::true:true +org.metricshub.winrm.shaded.org.apache.cxf.transport.http.asyncclient.AsyncHTTPConduitFactory:org.metricshub.winrm.shaded.org.apache.cxf.transport.http.HTTPConduitFactory:true:true +org.metricshub.winrm.shaded.org.apache.cxf.transport.http.asyncclient.AsyncHttpTransportFactory:org.metricshub.winrm.shaded.org.apache.cxf.transport.ConduitInitiator:true:true +org.metricshub.winrm.shaded.org.apache.cxf.ws.addressing.policy.AddressingAssertionBuilder::true:true +org.metricshub.winrm.shaded.org.apache.cxf.ws.addressing.policy.UsingAddressingAssertionBuilder::true:true +org.metricshub.winrm.shaded.org.apache.cxf.ws.addressing.policy.AddressingPolicyInterceptorProvider::true:true +org.metricshub.winrm.shaded.org.apache.cxf.ws.addressing.impl.AddressingWSDLExtensionLoader::true:true +org.metricshub.winrm.shaded.org.apache.cxf.ws.addressing.impl.AddressingFeatureApplier:org.metricshub.winrm.shaded.org.apache.cxf.ws.addressing.WSAddressingFeature$WSAddressingFeatureApplier:true:true +org.metricshub.winrm.shaded.org.apache.cxf.ws.addressing.impl.MAPAggregatorImplLoader:org.metricshub.winrm.shaded.org.apache.cxf.ws.addressing.MAPAggregator$MAPAggregatorLoader:true:true +org.metricshub.winrm.shaded.org.apache.cxf.wsdl11.WSDLManagerImpl:org.metricshub.winrm.shaded.org.apache.cxf.wsdl.WSDLManager:true +org.metricshub.winrm.shaded.org.apache.cxf.wsdl.ExtensionClassCreatorProxyService:org.metricshub.winrm.shaded.org.apache.cxf.wsdl.ExtensionClassCreator:true +org.metricshub.winrm.shaded.org.apache.cxf.ws.policy.PolicyEngineImpl:org.metricshub.winrm.shaded.org.apache.cxf.ws.policy.PolicyEngine:false +org.metricshub.winrm.shaded.org.apache.cxf.ws.policy.PolicyDataEngineImpl:org.metricshub.winrm.shaded.org.apache.cxf.policy.PolicyDataEngine:false +org.metricshub.winrm.shaded.org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl:org.metricshub.winrm.shaded.org.apache.cxf.ws.policy.AssertionBuilderRegistry:true +org.metricshub.winrm.shaded.org.apache.cxf.ws.policy.PolicyInterceptorProviderRegistryImpl:org.metricshub.winrm.shaded.org.apache.cxf.ws.policy.PolicyInterceptorProviderRegistry:true +org.metricshub.winrm.shaded.org.apache.cxf.ws.policy.PolicyBuilderImpl:org.metricshub.winrm.shaded.org.apache.cxf.ws.policy.PolicyBuilder:true +org.metricshub.winrm.shaded.org.apache.cxf.ws.policy.PolicyAnnotationListener::true +org.metricshub.winrm.shaded.org.apache.cxf.ws.policy.attachment.ServiceModelPolicyProvider::true +org.metricshub.winrm.shaded.org.apache.cxf.ws.policy.attachment.external.DomainExpressionBuilderRegistry::true +org.metricshub.winrm.shaded.org.apache.cxf.ws.policy.attachment.external.EndpointReferenceDomainExpressionBuilder::true +org.metricshub.winrm.shaded.org.apache.cxf.ws.policy.attachment.external.URIDomainExpressionBuilder::true +org.metricshub.winrm.shaded.org.apache.cxf.ws.policy.attachment.wsdl11.Wsdl11AttachmentPolicyProvider::true:true +org.metricshub.winrm.shaded.org.apache.cxf.ws.policy.mtom.MTOMAssertionBuilder::true +org.metricshub.winrm.shaded.org.apache.cxf.ws.policy.mtom.MTOMPolicyInterceptorProvider::true