2016-08-31 54 views
1

在我的Maven Web项目,CXF-CODEGEN-插件生成Java类并将其保存在文件夹中Maven的(使用Maven插件)加入生成的文件夹作为源文件夹,的IntelliJ不承认

${basedir}/src/generated 

我使用这些生成的类,在我的Java类中

src/main/java 

我使用的IntelliJ IDE和IntelliJ似乎并没有认识到

${basedir}/src/generated 

作为一个源文件夹(和正确的)。

我的问题是我怎样才能同时获得Maven和IntelliJ来识别生成的文件夹作为源文件夹。

我的项目结构是

. 
    ├── HOWTO.txt 
    ├── pom.xml 
    ├── src 
    │   ├── generated 
    │   │   └── com 
    │   │    └── bharath 
    │   │     └── ws 
    │   │      └── trainings 
    │   │       ├── CreateOrdersRequest.java 
    │   │       ├── CreateOrdersResponse.java 
    │   │       ├── CustomerOrdersPortType.java 
    │   │       ├── CustomerOrdersService.java 
    │   │       ├── GetOrdersRequest.java 
    │   │       ├── GetOrdersResponse.java 
    │   │       ├── ObjectFactory.java 
    │   │       ├── Order.java 
    │   │       ├── Product.java 
    │   │       └── package-info.java 
    │   ├── main 
    │   │   ├── java 
    │   │   │   └── com 
    │   │   │    └── bharath 
    │   │   │     └── ws 
    │   │   │      └── trainings 
    │   │   │       └── impl 
    │   │   │        └── CustomersOrdersWSImpl.java 
    │   │   └── webapp 
    │   │    ├── WEB-INF 
    │   │    │   ├── cxf-servlet.xml 
    │   │    │   ├── web.xml 
    │   │    │   └── wsdl 
    │   │    │    └── CustomerOrders.wsdl 
    │   │    └── index.jsp 
    │   └── test 
    │    └── java 
    ├── target 
    │   ├── classes 
    │   │   └── com 
    │   │    └── bharath 
    │   │     └── ws 
    │   │      └── trainings 
    │   │       ├── CreateOrdersRequest.class 
    │   │       ├── CreateOrdersResponse.class 
    │   │       ├── CustomerOrdersPortType.class 
    │   │       ├── CustomerOrdersService.class 
    │   │       ├── GetOrdersRequest.class 
    │   │       ├── GetOrdersResponse.class 
    │   │       ├── ObjectFactory.class 
    │   │       ├── Order.class 
    │   │       ├── Product.class 
    │   │       ├── impl 
    │   │       │   └── CustomersOrdersWSImpl.class 
    │   │       └── package-info.class 
    │   ├── cxf-codegen-plugin-markers 
    │   ├── generated-sources 
    │   │   └── annotations 
    │   ├── maven-archiver 
    │   │   └── pom.properties 
    │   ├── maven-status 
    │   │   └── maven-compiler-plugin 
    │   │    ├── compile 
    │   │    │   └── default-compile 
    │   │    │    ├── createdFiles.lst 
    │   │    │    └── inputFiles.lst 
    │   │    └── testCompile 
    │   │     └── default-testCompile 
    │   │      └── inputFiles.lst 
    │   ├── surefire 
    │   ├── wsdlfirstws 
    │   │   ├── META-INF 
    │   │   ├── WEB-INF 
    │   │   │   ├── classes 
    │   │   │   │   └── com 
    │   │   │   │    └── bharath 
    │   │   │   │     └── ws 
    │   │   │   │      └── trainings 
    │   │   │   │       ├── CreateOrdersRequest.class 
    │   │   │   │       ├── CreateOrdersResponse.class 
    │   │   │   │       ├── CustomerOrdersPortType.class 
    │   │   │   │       ├── CustomerOrdersService.class 
    │   │   │   │       ├── GetOrdersRequest.class 
    │   │   │   │       ├── GetOrdersResponse.class 
    │   │   │   │       ├── ObjectFactory.class 
    │   │   │   │       ├── Order.class 
    │   │   │   │       ├── Product.class 
    │   │   │   │       ├── impl 
    │   │   │   │       │   └── CustomersOrdersWSImpl.class 
    │   │   │   │       └── package-info.class 
    │   │   │   ├── cxf-servlet.xml 
    │   │   │   ├── lib 
    │   │   │   │   ├── aopalliance-1.0.jar 
    │   │   │   │   ├── asm-3.3.1.jar 
    │   │   │   │   ├── commons-codec-1.2.jar 
    │   │   │   │   ├── commons-httpclient-3.1.jar 
    │   │   │   │   ├── commons-logging-1.1.1.jar 
    │   │   │   │   ├── cxf-core-3.0.2.jar 
    │   │   │   │   ├── cxf-rt-bindings-soap-3.0.2.jar 
    │   │   │   │   ├── cxf-rt-bindings-xml-3.0.2.jar 
    │   │   │   │   ├── cxf-rt-databinding-jaxb-3.0.2.jar 
    │   │   │   │   ├── cxf-rt-frontend-jaxws-3.0.2.jar 
    │   │   │   │   ├── cxf-rt-frontend-simple-3.0.2.jar 
    │   │   │   │   ├── cxf-rt-security-3.0.2.jar 
    │   │   │   │   ├── cxf-rt-transports-http-3.0.2.jar 
    │   │   │   │   ├── cxf-rt-transports-http-jetty-3.0.2.jar 
    │   │   │   │   ├── cxf-rt-ws-addr-3.0.2.jar 
    │   │   │   │   ├── cxf-rt-ws-policy-3.0.2.jar 
    │   │   │   │   ├── cxf-rt-ws-security-3.0.2.jar 
    │   │   │   │   ├── cxf-rt-wsdl-3.0.2.jar 
    │   │   │   │   ├── ehcache-2.8.3.jar 
    │   │   │   │   ├── geronimo-javamail_1.4_spec-1.7.1.jar 
    │   │   │   │   ├── geronimo-servlet_3.0_spec-1.0.jar 
    │   │   │   │   ├── jasypt-1.9.2.jar 
    │   │   │   │   ├── jaxb-core-2.2.10-b140310.1920.jar 
    │   │   │   │   ├── jaxb-impl-2.2.10-b140310.1920.jar 
    │   │   │   │   ├── jetty-continuation-8.1.15.v20140411.jar 
    │   │   │   │   ├── jetty-http-8.1.15.v20140411.jar 
    │   │   │   │   ├── jetty-io-8.1.15.v20140411.jar 
    │   │   │   │   ├── jetty-security-8.1.15.v20140411.jar 
    │   │   │   │   ├── jetty-server-8.1.15.v20140411.jar 
    │   │   │   │   ├── jetty-util-8.1.15.v20140411.jar 
    │   │   │   │   ├── joda-time-2.2.jar 
    │   │   │   │   ├── neethi-3.0.3.jar 
    │   │   │   │   ├── opensaml-2.6.1.jar 
    │   │   │   │   ├── openws-1.5.1.jar 
    │   │   │   │   ├── slf4j-api-1.7.7.jar 
    │   │   │   │   ├── spring-aop-3.2.0.RELEASE.jar 
    │   │   │   │   ├── spring-beans-3.2.0.RELEASE.jar 
    │   │   │   │   ├── spring-context-3.2.0.RELEASE.jar 
    │   │   │   │   ├── spring-core-3.2.0.RELEASE.jar 
    │   │   │   │   ├── spring-expression-3.2.0.RELEASE.jar 
    │   │   │   │   ├── spring-jdbc-3.2.0.RELEASE.jar 
    │   │   │   │   ├── spring-orm-3.2.0.RELEASE.jar 
    │   │   │   │   ├── spring-tx-3.2.0.RELEASE.jar 
    │   │   │   │   ├── spring-web-3.2.0.RELEASE.jar 
    │   │   │   │   ├── spring-webmvc-3.2.0.RELEASE.jar 
    │   │   │   │   ├── stax2-api-3.1.4.jar 
    │   │   │   │   ├── woodstox-core-asl-4.4.1.jar 
    │   │   │   │   ├── wsdl4j-1.6.3.jar 
    │   │   │   │   ├── wss4j-bindings-2.0.2.jar 
    │   │   │   │   ├── wss4j-policy-2.0.2.jar 
    │   │   │   │   ├── wss4j-ws-security-common-2.0.2.jar 
    │   │   │   │   ├── wss4j-ws-security-dom-2.0.2.jar 
    │   │   │   │   ├── wss4j-ws-security-policy-stax-2.0.2.jar 
    │   │   │   │   ├── wss4j-ws-security-stax-2.0.2.jar 
    │   │   │   │   ├── xml-resolver-1.2.jar 
    │   │   │   │   ├── xmlschema-core-2.1.0.jar 
    │   │   │   │   ├── xmlsec-2.0.2.jar 
    │   │   │   │   └── xmltooling-1.4.1.jar 
    │   │   │   ├── web.xml 
    │   │   │   └── wsdl 
    │   │   │    └── CustomerOrders.wsdl 
    │   │   └── index.jsp 
    │   └── wsdlfirstws.war 
    └── wsdlfirstws.iml 

我还增加了插件构建辅助性Maven的插件(添加其他源文件夹)的基础上,其他建议的SO答案,但它似乎不工作(至少IntelliJ无法识别它们)在mvn干净安装后。

<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>${basedir}/src/generated</sourceRoot> 
        <wsdlOptions> 
         <wsdlOption> 
          <wsdl>${basedir}/src/main/webapp/WEB-INF/wsdl/CustomerOrders.wsdl</wsdl> 
         </wsdlOption> 
        </wsdlOptions> 
       </configuration> 
       <goals> 
        <goal>wsdl2java</goal> 
       </goals> 
      </execution> 
     </executions> 
    </plugin> 
    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>build-helper-maven-plugin</artifactId> 
     <version>1.7</version> 
     <executions> 
      <execution> 
       <id>add-source</id> 
       <phase>generate-sources</phase> 
       <goals> 
        <goal>add-source</goal> 
       </goals> 
       <configuration> 
        <sources> 
         <source>${basedir}/src/generated</source> 
        </sources> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin> 
+0

我找到了一个解决方法:IntelliJ(也可能是其他IDE)会识别maven插件默认生成的源目录。默认生成的源目录是target/generated/。因此,在这种情况下,请删除maven插件中的 $ {basedir}/src/generated行,以便在默认文件夹中生成。 – user2977259

回答

0

既然是“非标”的路径,会的IntelliJ不把它捡起来自动完成,但你可以很容易地解决这个问题是这样的:

右键单击该文件夹,你的情况src\generated和选择:

Mark Directory As - >Generated Source Root

你应该看到它变成蓝色,下面所有的包(com ...等),应认定为Java代码。

+0

谢谢,但我也在寻找一个基于maven的解决方案,可以完成相同的任务。 – user2977259

+0

了解这一点,但intellij并不知道maven插件生态系统中的所有插件(例如'cxf-codegen-plugin'),而是依赖于默认设置。有时候,事实上,使用非默认配置可能会更清楚一些,在这种情况下,您需要手动设置它......可能有点烦人,但由于它是“一次性”配置,因此只需配置一次每个maven项目:) – vikingsteve

+0

我得到的IntelliJ无法理解任何非默认配置没有一些用户操作。感谢您的帮助伴侣。 – user2977259

相关问题