Hec*_*tor 5 eclipse jax-rs gradle-eclipse build.gradle
我正在关注这篇文章
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
Run Code Online (Sandbox Code Playgroud)
我的目标运行时是
WildFly Full 11.0.0.Final (WildFly Core 3.0.8.Final)
Run Code Online (Sandbox Code Playgroud)
我的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"
}
Run Code Online (Sandbox Code Playgroud)
我可以选择所需的Facets并设置目标运行时等.
我选择的方面是
cdi 2.0
dynamic web module 3.1
java 1.8
jax-rs 2.1
Run Code Online (Sandbox Code Playgroud)
点击"应用并关闭"后,项目没有报告构建问题.
我现在不喜欢的是项目有两个WEB-INF文件,一个是项目级别,另一个是WebContent文件夹,我期望它.
即使我没有选择生成web.xml,也有一个web.xml文件.
当我通过右键单击gradle.build文件并选择gradle> refresh gradle项目来刷新我的gradle构建时,真正的问题就开始了.
刷新完成后,已取消选择以下构面
cdi 2.0
jax-rs 2.1
Run Code Online (Sandbox Code Playgroud)
我的动态网络模块已从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.
Run Code Online (Sandbox Code Playgroud)
如何配置我的动态Web项目,以便将我想要的Facets保持在关卡中?
什么是我的gradle.build缺少?
UPDATE
所以我追踪了Gradle的罪魁祸首
org.gradle.plugins.ide.eclipse.EclipseWtpPlugin:-
project.getPlugins().withType(WarPlugin.class, new Action<WarPlugin>() {
@Override
public void execute(WarPlugin warPlugin) {
((IConventionAware) task.getFacet()).getConventionMapping().map("facets", new Callable<List<Facet>>() {
@Override
public List<Facet> 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()))
);
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
这导致重复的jst.web条目org.eclipse.wst.common.project.facet.core.xml
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<fixed facet="jst.java"/>
<fixed facet="jst.web"/>
<installed facet="jst.web" version="2.4"/>
<installed facet="jst.java" version="1.8"/>
<installed facet="jst.web" version="3.1"/>
</faceted-project>
Run Code Online (Sandbox Code Playgroud)
为什么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'
}
}
}
Run Code Online (Sandbox Code Playgroud)
发现这个笨重的黑客修复了重复的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"
}
Run Code Online (Sandbox Code Playgroud)
但是现在我有以下两个日食错误标记
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.
Run Code Online (Sandbox Code Playgroud)
我可以通过在eclipse中修改构建器顺序来解决此问题,但是一旦我使用Gradle构建项目,问题就会重新出现.
我发现的解决方案如下:-
HACK gradle 构建文件如下:-
apply plugin: 'war'
apply plugin: 'eclipse-wtp'
eclipse {
project {
buildCommands.clear();
buildCommand 'org.eclipse.jdt.core.javabuilder'
buildCommand 'org.eclipse.wst.common.project.facet.core.builder'
buildCommand 'org.eclipse.buildship.core.gradleprojectbuilder'
buildCommand 'org.jboss.tools.jst.web.kb.kbbuilder'
buildCommand 'org.jboss.tools.cdi.core.cdibuilder'
buildCommand 'org.eclipse.wst.validation.validationbuilder'
}
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"
}
Run Code Online (Sandbox Code Playgroud)
“加速开发者生产力”真的吗???????
| 归档时间: |
|
| 查看次数: |
1203 次 |
| 最近记录: |