2012-07-27 50 views
3

我想在Maven项目中部署我的src/main/webapp文件夹作为JBoss7中的应用程序。我试图做的是:如何将src/main/webapp文件夹(Maven)作为JBoss7中的应用程序部署?

  • 保存并刷新XHTML,CSS,JS等
  • mvn prepare-package war:inplace全面部署

当然,这是仅用于开发。我想要与Maven Jetty插件类似的工作流程,但对于JEE6应用程序。

部署扫描程序正在查找* .war目录。

我目前的解决方案:

  • 使用JBoss-AS-Maven的插件来部署软件包阶段 - 这个我需要重新部署在每个CSS,JS或XHTML变化
  • 添加我的目标文件夹部署扫描程序并执行war:exploded将资源复制到war目录。完全重新部署需要使用antrun插件创建.dodeploy文件,这非常难看。我仍然需要在节约资源后运行maven。我不希望我的资源被复制到任何地方。

没有什么特别的,我pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>com.pg</groupId> 
<artifactId>jeesample</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>war</packaging> 

<name>jeesample</name> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-web-api</artifactId> 
     <version>6.0</version> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.primefaces</groupId> 
     <artifactId>primefaces</artifactId> 
     <version>3.3.1</version> 
    </dependency> 

    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>1.6.6</version> 
    </dependency> 


</dependencies> 

<build> 
    <finalName>jeesample.war</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 
    </plugins> 


</build> 

<repositories> 
    <repository> 
     <id>prime-repo</id> 
     <name>PrimeFaces Maven Repository</name> 
     <url>http://repository.primefaces.org</url> 
     <layout>default</layout> 
    </repository> 
</repositories> 

+0

你能告诉我们你的pom吗?你想仅通过maven(cmd)还是通过IDE进行部署? – peshkira 2012-07-27 13:28:17

+0

Pom补充说。现在,如果我从cmd或IDE进行部署,这并没有什么不同。我尝试用JBoss插件进行日食。它很好地复制了资源,但用这个插件构建的war文件缺少jar和一些类。它没有使用maven进行战争集会。 – 2012-07-27 13:34:09

回答

5

尝试使用maven-war-plugin。 Maven应该添加你的依赖关系。但是,请注意,JBoss 7有一个新的模块依赖系统,所以如果你想使用由jboss提供的一些内部模块,你必须在你的MANIFEST.MF文件中声明它们,并将它们标记为在pom中提供。 XML。 JBoss的7读取清单,并加载在部署

这里的模块是对我工作的例子:

有了这个配置正确的战争创建(MVN战争:战争)。另外,当我在eclipse中右键单击项目并选择>'在服务器上运行'时,战争部署正确。资源(如xhtml等)会在保存时自动重新部署,并且刷新后可以看到更改。 我也有安装m2eclipse插件

+0

这很奇怪。当我按照自己的方式部署应用程序时,Everyting可以正常工作然而,当我通过Eclipse的“Run on Server”进行部署时,例如:'/viewScopeSample.xhtml:'com.pg.jeesample.ui.SimpleViewBean'类没有'addToCounter'属性。当然,bean包含这样的方法。 – 2012-07-27 14:01:29

+0

使项目清洁并重新部署。同时检查是否所有内容都已正确复制到JBoss的部署文件夹中 – peshkira 2012-07-27 14:02:49

+0

未正确复制。在我的目标目录中包含primefaces和slf4j时,WEB-INF/lib是空的。你在Eclipse上安装了JBoss工具吗?我不。我刚刚下载了JBoss 7服务器描述符。也许我需要jee项目的maven集成或者其他什么东西。在我看来,日食正在使用其内部构建系统来组装战争并忽略maven。 – 2012-07-27 14:03:51

0

,如果你可以切换到播放的框架,这将提高生产效率非常多。 reall ...它就像在轨道上的红宝石。

此外,如果你正在使用maven,或许这可以帮助自动部署EAR在安装阶段

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
     <artifactItems> 
      <artifactItem> 
       <groupId>${project.groupId}</groupId> 
       <artifactId>${project.artifactId}</artifactId> 
       <version>${project.version}</version> 
       <type>ear</type> 
       <overWrite>true</overWrite> 
       <outputDirectory>${jboss-inst}/deploy</outputDirectory> 
      </artifactItem> 
     </artifactItems> 
     <skip>${skip.ear.auto.deployment}</skip> 
    </configuration> 
    <executions> 
     <execution> 
      <phase>install</phase> 
      <goals> 
       <goal>copy</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 
+0

我知道玩框架。谢谢。你的建议迫使我重新部署webapp以查看单个xhtml的更改。为此,j可以更容易地使用jboss插件。我想要实现的是保存XHTML文件并刷新浏览器以查看更改。 – 2012-07-27 13:24:46

相关问题