当前位置:  开发笔记 > Android > 正文

如何将Java Gradle项目转换为动态Web项目?

如何解决《如何将JavaGradle项目转换为动态Web项目?》经验,为你挑选了0个好方法。

我正在关注这篇文章

https://www.linkedin.com/pulse/building-jax-rs-project-eclipse-gradle-neeraj-malhotra

关于如何使用Gradle在Eclipse中构建JAX-RS项目

我在用

Eclipse Java EE IDE for Web Developers.

Version: Oxygen.2 Release (4.7.2)
Build id: 20171218-0600

我的目标运行时是

WildFly Full 11.0.0.Final (WildFly Core 3.0.8.Final)

我的gradle构建文件

apply plugin: 'war'
apply plugin: 'eclipse-wtp'

sourceCompatibility = 1.8

repositories {
 mavenCentral()
}


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

我可以选择所需的Facets并设置目标运行时等.

我选择的方面是

cdi 2.0
dynamic web module 3.1
java 1.8
jax-rs 2.1

点击"应用并关闭"后,项目没有报告构建问题.

我现在不喜欢的是项目有两个WEB-INF文件,一个是项目级别,另一个是WebContent文件夹,我期望它.

即使我没有选择生成web.xml,也有一个web.xml文件.

当我通过右键单击gradle.build文件并选择gradle> refresh gradle项目来刷新我的gradle构建时,真正的问题就开始了.

刷新完成后,已取消选择以下构面

cdi 2.0
jax-rs 2.1

我的动态网络模块已从3.1降级到2.4

除此之外,我还有以下两个MARKERS

CDI Core Validator cannot run on project gradle_jax_rs because Validation Builder precedes CDI (Contexts and Dependency Injection) Builder.

EL Validator cannot run on project gradle_jax_rs because Validation Builder precedes JBoss Knowledge Base Builder.

如何配置我的动态Web项目,以便将我想要的Facets保持在关卡中?

什么是我的gradle.build缺少?

UPDATE

所以我追踪了Gradle的罪魁祸首

org.gradle.plugins.ide.eclipse.EclipseWtpPlugin:-

project.getPlugins().withType(WarPlugin.class, new Action() {
                    @Override
                    public void execute(WarPlugin warPlugin) {
                        ((IConventionAware) task.getFacet()).getConventionMapping().map("facets", new Callable>() {
                            @Override
                            public List call() throws Exception {
                                return Lists.newArrayList(
                                    new Facet(Facet.FacetType.fixed, "jst.java", null),
                                    new Facet(Facet.FacetType.fixed, "jst.web", null),
                                    new Facet(Facet.FacetType.installed, "jst.web", "2.4"),
                                    new Facet(Facet.FacetType.installed, "jst.java", toJavaFacetVersion(project.getConvention().getPlugin(JavaPluginConvention.class).getSourceCompatibility()))
                                );
                            }
                        });
                    }

                });

这导致重复的jst.web条目org.eclipse.wst.common.project.facet.core.xml



    
    
    
    
    

为什么Gradle无法正常工作.有关使用所选方面构建动态Web项目的困难吗?

我已升级buildship到... http://download.eclipse.org/buildship/updates/e47/releases/2.x/2.2.1.v20180125-1441

即使添加到我的gradle.build,它仍然无法正确构建所需的动态Web项目

eclipse {
            wtp {
                facet {
                    facet name: 'java', version: '1.8'
                    facet name: 'jst.web', version: '3.1'
                    facet name: 'wst.jsdt.web', version: '1.0'
                }
            } 
        } 

发现这个笨重的黑客修复了重复的jst.web版本

apply plugin: 'war'
apply plugin: 'eclipse-wtp'

eclipse.wtp.facet {
    file {
            facet name: 'jst.web', version: '3.1'
            def oldJstWebFacet = facets.findAll {
                it.name == 'jst.web' && it.version == '2.4'
            }
            facets.removeAll(oldJstWebFacet)
            facet name: 'java', version: '1.8'
            facet name: 'jst.cdi', version: '2.0'
            facet name: 'jst.jaxrs', version: '2.1'
            facet name: 'wst.jsdt.web', version: '1.0'              
        }
}

repositories {
 mavenCentral()
}

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

但是现在我有以下两个日食错误标记

CDI Core Validator cannot run on project Attempt0002 because Validation Builder precedes CDI (Contexts and Dependency Injection) Builder.

EL Validator cannot run on project Attempt0002 because Validation Builder precedes JBoss Knowledge Base Builder.

我可以通过在eclipse中修改构建器顺序来解决此问题,但是一旦我使用Gradle构建项目,问题就会重新出现.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有