任何人都可以解释相同的Java源代码如何最终编译为二进制不同的类文件?
问题来自以下情况:
我们有一个相当大的应用程序(800多个类)已经分支,重组然后重新集成回主干.在重新集成之前,我们将主干合并到分支中,这是标准过程.
最终结果是一组带有分支源的目录和一组带有主干源的目录.使用Beyond Compare,我们能够确定两组源相同.但是,在编译时(使用IntelliJ v11中托管的maven的相同JDK),我们注意到大约十几个类文件是不同的.
当我们为每对明显不同的类文件反编译源代码时,我们最终得到了相同的java源代码,因此就最终结果而言,它似乎并不重要.但为什么只有少数文件不同?
谢谢.
额外的想法:
如果maven/javac以不同的顺序编译文件,可能会影响最终结果吗?
我正在使用 Apache cxf maven 插件 (v3.3.0) 成功生成 java 包装器。
但是,maven 构建的输出包含来自wsdl2java 的数千个 DEBUG 日志记录行,我无法删除这些行。是否有额外的参数或其他方法可以使过程静音,以便我只收到成功(或可能失败)的消息?
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxf.version}</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${project.build.directory}/generated-sources/cxf</sourceRoot>
<defaultOptions>
<autoNameResolution>true</autoNameResolution>
</defaultOptions>
<wsdlOptions>
<!--Some Web Service -->
<wsdlOption>
<wsdl>https://some/web/service.wsdl</wsdl>
<extraargs>
<extraarg>-client</extraarg>
<extraarg>-quiet</extraarg>
<extraarg>-p</extraarg>
<extraarg>com.foo.bar</extraarg>
</extraargs>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)