2014-12-05 60 views
4

在这一刻我有一个build.gradle文件,成功编译和测试(使用JUnit4)一个非常非常简单的Java项目。如何为由JBoss AS 7.1托管的JSF2应用程序设置Gradle构建?

我的下一步是为此构建添加JSF2支持(以便拥有一个Web JSF2应用程序)。这个想法是将应用程序托管在我的本地JBoss 7.1容器中。现在事情变得有点模糊了。

我所做的就是JSF2支持添加到我加入一些依赖打造专业化,所以dependencies块是现在这个样子:

我注意到
dependencies { 
    compile 'org.jboss.weld.se:weld-se-core:'+weldVersion 
    compile 'br.gov.frameworkdemoiselle:demoiselle-core:'+demoiselleVersion 
    compile 'br.gov.frameworkdemoiselle:demoiselle-jsf:'+demoiselleVersion 

    runtime 'javax.servlet:javax.servlet-api:3.1.0' 
    runtime 'javax.enterprise:cdi-api:1.0-SP1' 
    runtime 'org.jboss.weld.servlet:weld-servlet:'+weldVersion 
    runtime 'com.sun.faces:jsf-api:2.2.8-02' 
    runtime 'org.slf4j:slf4j-log4j12:1.7.7' 

    testCompile 'junit:junit:4.11' 
    testCompile 'org.jboss.arquillian.junit:arquillian-junit-container:'+arquillianVersion  
    testCompile 'br.gov.frameworkdemoiselle.component:demoiselle-junit:2.3.1' 
} 

首先奇怪的是,与摇篮刷新项目之后(通过使用Gradle > Refresh All菜单),JBoss无法看到它。我注意到(似乎)Gradle在项目中禁用了方面的使用。如果我手动激活构面并将运行时设置为JBoss 7.1,那么我将能够将其添加到JBoss(但我不希望再手动执行)。

将它添加到JBoss之后,我可以运行服务器,并且日志表示与我的web应用程序相对应的模块已被JBoss正确加载,但是当我在浏览器中键入它的url时,服务器会响应HTTP状态404。

src/main/webapp我有简单的index.html文件(如下所示),所以我期望的仅仅是在浏览器中看到它的内容,但这并没有发生。

<html> 
<body> 
<h1>Hello world!</h1> 
</body> 
</html> 

我在想什么?

回答

5

经过一番研究,我终于明白事情要简单得多。我想知道的是我使用了错误的Gradle插件。我必须用eclipse-wtp替换eclipse插件,然后指定我想要在我的应用程序中使用哪些方面和运行时。

最后的build.gradle文件如下:

apply plugin: 'java' 
apply plugin: 'eclipse-wtp' // The correct plug-in! 
apply plugin: 'application' 
apply plugin: 'war' 

sourceCompatibility = 1.7 
targetCompatibility = 1.7 

tasks.withType(JavaCompile) { 
    options.encoding = "UTF-8" 
} 

def hibernateVersion = "4.3.7.Final" 
def weldVersion = "1.1.27.Final"//"2.2.7.Final" Demoiselle 2.4.1 não é compatível com Weld 2 
def demoiselleVersion = "2.4.1" 
def arquillianVersion = "1.1.5.Final" 

repositories { 
    mavenLocal() 
    mavenCentral() 
} 

dependencies { 
    runtime 'javax.servlet:javax.servlet-api:3.1.0' 
    runtime 'javax.enterprise:cdi-api:1.0-SP1' 
    runtime 'org.jboss:jandex:1.2.2.Final' 
} 

eclipse { 
    wtp { 
     facet { 
      facet name: "java", version: "1.7"   // Java version 
      facet name: "jst.web", version: "3.0"  // Dynamic Web Application 
      facet name: "jst.jsf", version: "2.2"  // Java Server Faces 
      facet name: "wst.jsdt.web", version: "1.0" // JavaScript 
     } 
    } 
} 

task wrapper(type: Wrapper) { 
    gradleVersion = '2.2.1' 
} 

我希望这可以帮助其他一些人!

+0

我试过了,但jsf页面没有包含在war文件中。需要添加什么才能获得添加到战争中的jsf页面 – eatSleepCode 2015-10-12 12:31:11

+0

对不起,我们花了很长时间回答。在我的情况下,Gradle工作得很好,但我的视图文件(css,images,xhtml等)位于src \ main \ webapp下。这是你的情况吗? – AlexSC 2015-10-15 18:43:39

相关问题