Gradleスクリプトを使用してSOAP Webサービスのクラスを生成しようとしています。MavenCentralで利用可能なプラグイン_gradle-jaxws-plugin
_を使用しています。
私のスクリプトは次のようになります。
_buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath "eu.schnuckelig.gradle:gradle-jaxws-plugin:1.0.2"
}
}
apply plugin: 'maven'
apply plugin: 'jaxws'
jaxws {
System.setProperty('javax.xml.accessExternalSchema', 'all')
packageName = 'com.myservice'
wsdlURL = 'https://example.org/services/users.svc?wsdl'
}
repositories {
mavenCentral()
}
_
このスクリプトをそのまま使用すると、次のエラーが発生します
_[ant:wsimport] [ERROR] Sun.security.validator.ValidatorException: PKIX path building failed: Sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
_
このエラーを解決する1つの方法は、_gradle build -Djavax.net.ssl.trustStore=cacerts -Djavax.net.ssl.trustStorePassword=changeit
_です。これはうまくいきました。しかし、ビルドスクリプトでこれらのjvmプロパティを渡したいと思います。
systemProperty.set()
を試しましたが、機能しませんでした。 _gradle.properties
_を試していますが、それも機能しません。これらのプロパティを渡すためのクリーンな方法はありますか?また、自動ビルドを行うときに、本番環境でこれをどのように処理するのか疑問に思っています。
通常、このようなデータは機密性が高いため、コマンドラインを介して渡すか、本番環境で自動ビルドを使用している場合は、システムで構成する必要があります。環境変数(これが最も頻繁に処理される方法です)。
gradle.properties
を介してシステムプロパティを構成できますが、それらは 先頭に追加する必要があります プレフィックスがsystemProp
であるため、次のようになります。
gradle.properties:
systemProp.javax.net.ssl.trustStore=cacerts
systemProp.javax.net.ssl.trustStorePassword=changeit
また、apply
セクションのすぐ下のbuild.gradle
に配置された次のコードも機能するはずです:build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath "eu.schnuckelig.gradle:gradle-jaxws-plugin:1.0.2"
}
}
apply plugin: 'maven'
apply plugin: 'jaxws'
System.setProperty('javax.net.ssl.trustStore', 'cacerts')
System.setProperty('javax.net.ssl.trustStorePassword', 'changeit')
これはうまくいくはずです
configurations {
jaxws
}
dependencies {
jaxws 'com.Sun.xml.ws:jaxws-tools:2.1.4'
}
task wsimport {
ext.destDir = file("${projectDir}/src/main/generated")
System.setProperty('javax.net.ssl.keyStoreType', 'pkcs12')
System.setProperty('javax.net.ssl.keyStore', 'client.pfx')
System.setProperty('javax.net.ssl.keyStorePassword', 'xxxxxxxxx')
System.setProperty('javax.net.ssl.keyPassword', 'xxxxxxxxx')
System.setProperty('javax.net.ssl.trustStore', 'truststore.jks')
System.setProperty('javax.net.ssl.trustStorePassword', 'xxxxxxxx')
System.setProperty('Sun.security.ssl.allowUnsafeRenegotiation','true')
doLast {
ant {
sourceSets.main.output.classesDir.mkdirs()
destDir.mkdirs()
taskdef(name: 'wsimport',
classname: 'com.Sun.tools.ws.ant.WsImport',
classpath: configurations.jaxws.asPath
)
wsimport(keep: true,
destdir: sourceSets.main.output.classesDir,
sourcedestdir: destDir,
extension: "true",
verbose: "false",
quiet: "false",
package: "com.example.client.api",
xnocompile: "true",
wsdl: 'https://test.com/test.asmx?wsdl') {
xjcarg(value: "-XautoNameResolution")
}
}
}
}
compileJava {
dependsOn wsimport
source wsimport.destDir
}