首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何成功地集成Gradle、MapStruct 1.3.1和Eclipse2020-03?

如何成功地集成Gradle、MapStruct 1.3.1和Eclipse2020-03?
EN

Stack Overflow用户
提问于 2020-04-02 20:02:15
回答 1查看 560关注 0票数 0

是否有文档或示例说明如何成功地将MapStruct 1.3.1与Eclipse2020-03和Gradle/Buildship集成,并说明生成MapStruct实现类需要做些什么?我已经做了相当多的搜索和阅读,但似乎无法确定,尝试了相当多的事情。

我的项目设置是一个分级多项目设置,它运行良好,直到我尝试通过Gradle添加MapStruct。我在我的项目中有带有注释的JAX类,我看到的问题似乎在某种程度上与注释处理有关,因为构建失败了,REST类中注释的编译错误(请参阅下面的异常输出)。

任何指点、进一步阅读、修正都是受欢迎和非常感谢的。

当我在Eclipse任务视图中运行相关的build任务时,遇到的例外情况是:

代码语言:javascript
复制
D:\<placeholder>\PlanContractualDetails.java:527: error: cannot find symbol
  @ApiModelProperty(example = "null", required = true, value = "True - life time investment option phasing applicable. Please note that this value will be always populated by using the active LTIO on the plan, irrespective of the effectiveDate passed by the caller.")
   ^
  symbol:   class ApiModelProperty
  location: class PlanContractualDetails
100 errors

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':epsilon-plan-service:compileJava'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.3/userguide/command_line_interface.html#sec:command_line_warnings

BUILD FAILED in 563ms
1 actionable task: 1 executed

我的build.gradle如下:

代码语言:javascript
复制
/*
 * Project build file.
 */

 /* Plugin configuration */
plugins {
    id 'java'
    id 'war'
    id 'eclipse-wtp'
}

sourceCompatibility = JavaVersion.VERSION_1_8
/* Project dependencies */
dependencies { 

    compile "org.mapstruct:mapstruct-jdk8:${mapstructVersion}"
    testCompile 'org.testng:testng:6.10', 'org.easytesting:fest-assert:1.4'
    compile "org.mapstruct:mapstruct-processor:${mapstructVersion}"

    compile "javax.ws.rs:javax.ws.rs-api:2.0.1"
    providedCompile "javax.servlet:javax.servlet-api:3.1.0" 

    // --- Mapstruct ---------------------------------
    // https://mvnrepository.com/artifact/org.mapstruct/mapstruct-jdk8
     //compile group: 'org.mapstruct', name: 'mapstruct-jdk8', version: '1.3.1.Final'
    // https://mvnrepository.com/artifact/org.mapstruct/mapstruct-processor
    //compile group: 'org.mapstruct', name: 'mapstruct-processor', version: '1.3.1.Final'
    //compile "org.mapstruct:mapstruct:${mapstructVersion}"

    // If you are using mapstruct in test code
    //testAnnotationProcessor "org.mapstruct:mapstruct-processor:${mapstructVersion}"
    //compileOnly("org.mapstruct:mapstruct-jdk8:${mapstructVersion}")
    //annotationProcessor "org.mapstruct:mapstruct-processor:${mapstructVersion}"

    //compileOnly "javax:javaee-api:${javaee_api_version}"
}

tasks.withType(JavaCompile) {
    options.compilerArgs = [
            '-Amapstruct.suppressGeneratorTimestamp=true'
    ]
}

sourceSets.main.java.srcDirs += 'src'
//sourceSets.main.kotlin.srcDirs += myDir

/* Eclipse configuration */
ext.outputDir = 'src/main/webapp/WEB-INF/classes'
eclipse {
/*
    project {
        natures 'org.eclipse.buildship.core.gradleprojectnature'

        //buildCommands.clear();
        //buildCommand 'org.eclipse.buildship.core.gradleprojectbuilder'
    }
*/
    classpath {
        defaultOutputDir = file("${outputDir}")
        file.whenMerged {
            entries.each {
                source ->
                    // This seems kludgy.
                    if (source.kind == 'src' && source.toString().contains('output=') && source.output.contains("${eclipse_default_output_dir}")) {
                        source.output = "${outputDir}"
                    }
            }
        }
    }

    /* 

        Deal with project facets.
        See: https://stackoverflow.com/questions/48828869/how-to-convert-java-gradle-project-to-dynamic-web-project
        And: https://discuss.gradle.org/t/easily-customize-the-eclipse-wtp-facet-version/8690
        And: https://github.com/gradle/gradle/issues/1334
    */
  wtp {
    facet {
      file {
        withXml {
            /* 
                Ensure that the Eclipse facet metadata in the file .settings/org.eclipse.wst.common.project.facet.core.xml
                is preserved after running this build script. This is needed as Gradle overwrites this file and defaults 
                some of the entries to older versions which may result in both Eclipse metadata and Gradle build errors.                    
            */
            def node = it.asNode()
            /*
                This runtime facet is specifically for Eclipse projects such as a Dynamic Web Project project created 
                for development, deployment and debugging on WebSphere Application Server traditional V9.0.

                The name: must correspond to the name Properties -> Project Facets -> Runtimes tab entry 
                that is ticked for this Eclipse project.
            */
                node.appendNode('runtime', [name: 'WebSphere Application Server traditional V9.0'])
            }
            def oldJstWebFacet = facets.findAll {
                it.name == 'jst.web' && it.version == '2.4'
            }
            facets.removeAll(oldJstWebFacet)
            facet name: 'jst.web', version: '3.1'

            /*
                Additional Eclipse project facets for WebSphere 9 traditional.
            */
            facet name: 'com.ibm.websphere.coexistence.web', version: '9.0'
            facet name: 'com.ibm.websphere.extended.web', version: '9.0'

            //facet name: 'java', version: '1.8'         
      }
    }
  }
}

test {
    useTestNG()
}```
EN

回答 1

Stack Overflow用户

发布于 2020-04-05 13:47:10

我的问题原来不是MapStruct问题,也不是与注释处理有关的问题。我从头开始做了所有的事情,但是在生成任何JAX或MapStruct代码之前,我测试了MapStruct的Gradle配置,然后它运行了。然后添加了一些MapStruct示例代码,它仍然很高兴;但是,添加JAX绑定会导致构建失败。修复方法是添加正确的JAX依赖项,并通过运行Eclipse清理和构建任务重新构建Eclipse元数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61000124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档