Java Gradle:出现神秘类文件

Java Gradle:出现神秘类文件,java,jar,gradle,Java,Jar,Gradle,在我们的项目中,我们有一个指向src目录的gradle构建文件。gradle使用dependencies中的fileTree方法指向的lib目录中有几个内部jar文件。我构建了这些jar文件以包含源代码。这些jar文件中的大多数都包含用于调用使用wsimport生成的Web服务的模式和存根,它们的部分构建涉及使用服务和端口方法将相关的WSDL打包到classes目录中 我看到的是,当我执行构建时,其中一个WSImport服务类正在从jar文件中编译出来,并与源目录中的类文件一起复制。我不知道为什

在我们的项目中,我们有一个指向src目录的gradle构建文件。gradle使用dependencies中的fileTree方法指向的lib目录中有几个内部jar文件。我构建了这些jar文件以包含源代码。这些jar文件中的大多数都包含用于调用使用wsimport生成的Web服务的模式和存根,它们的部分构建涉及使用服务和端口方法将相关的WSDL打包到classes目录中

我看到的是,当我执行构建时,其中一个WSImport服务类正在从jar文件中编译出来,并与源目录中的类文件一起复制。我不知道为什么这个特定的文件会被定位和编译

正如我前面提到的,此类确实引用了一个WSDL文件,该文件与Service.class放在同一个包中,并由以下内容引用:

url = com.addresses.ws.addressvalidation.AddressValidationService.class.getResource("AddressValidationService.wsdl");
但是我们正在使用的另一个Web服务做同样的事情,并且没有编译。使用该类的代码相当普通:

AddressValidationService service = new AddressValidationService();
AddressValidationPortType portType = service.getAddressValidationServicePort();
以及build.gradle的摘录,该摘录引用了包含jar文件的目录:

dependencies {
    ...
    compile fileTree('webapp/WEB-INF/lib')
}

因此,如果这里的信息不够详细,我很抱歉,我只是不知道为什么会发生这种情况,所以我不确定应该包括哪些其他信息。

BTW:我应该提到,如果我从地址验证jar中删除java文件,这个问题不再发生了。默认情况下,javac将在Jars中编译源文件。请参阅javac文档,了解如何关闭此功能,然后相应地配置JavaCompile任务。谢谢,但这仍然无法解释为什么要编译/分发此特定文件。我不知道编译类路径上的源文件是否已编译的确切规则请检查javac文档,但解决方案可能会保持不变,即配置javac不编译在编译类路径上找到的任何源代码。或者更好,将源代码打包为一个单独的Jar。