2014-12-05 3 views
4

В данный момент у меня есть файл build.gradle, который успешно компилирует и тестирует (используя JUnit4) очень простой Java-проект.Как настроить Gradle для приложения JSF2, которое будет размещено JBoss AS 7.1?

Следующим шагом будет добавление поддержки JSF2 (для того чтобы иметь приложение JSF2 в Интернете) для этой сборки. Идея заключается в размещении приложения в моем локальном контейнере JBoss 7.1. Теперь все стало немного нечетким для меня.

Что я сделал, чтобы добавить поддержку JSF2 к моему Buid путем добавления некоторых зависимостей, поэтому 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 (используя меню Gradle > Refresh All), JBoss не может его увидеть. Я заметил, что (кажется) Gradle отключил использование граней в проекте. Если я вручную активирую фасеты и задаю время выполнения JBoss 7.1, тогда я смогу добавить его в JBoss (но я бы предпочел не делать это вручную больше).

После добавления его в JBoss я могу запустить сервер, и в журнале говорится, что модуль, соответствующий моему веб-приложению, был правильно загружен JBoss, однако, когда я печатаю его url в браузере, сервер отвечает статусом HTTP 404.

В src/main/webapp У меня есть простой файл index.html (показано ниже), так что я ожидал только увидеть его содержимое в браузере, но этого не происходит.

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

Что мне не хватает?

ответ

5

После некоторого изучения я, наконец, понял, что все гораздо проще. То, что мне не хватало, чтобы понять, что я использовал неправильный плагин Gradle. Мне пришлось заменить eclipse плагин на eclipse-wtp, а затем указать, какие грани и время выполнения я хотел использовать в своем приложении.

Конечный файл 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 не включены в файл войны. Что нужно добавить, чтобы получить страницы jsf, добавленные в войну – eatSleepCode

+0

Извините, что долго так долго отвечал. В моем случае Gradle работал отлично, но мои файлы просмотра (css, images, xhtml и т. Д.) Локализованы в src \ main \ webapp. Это ваш случай? – AlexSC

 Смежные вопросы

  • Нет связанных вопросов^_^