gpt4 book ai didi

eclipse - 如何成功集成 Gradle、MapStruct 1.3.1 和 Eclipse 2020-03?

转载 作者:行者123 更新时间:2023-12-03 05:05:00 26 4
gpt4 key购买 nike

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

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

任何指针,进一步阅读,修复都是受欢迎的,非常感谢。

运行相关 build 时遇到的异常Eclipse 的 Gradle Tasks View 中的任务是:

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如下:
/*
* 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()
}```


最佳答案

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

关于eclipse - 如何成功集成 Gradle、MapStruct 1.3.1 和 Eclipse 2020-03?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61000124/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com