核心JSF2项目可重用于其他项目[JAR]

时间:2013-03-06 13:27:06

标签: java maven jsf-2 composite-component

我创建了一个包含许多Abstract和Generic类的项目,以及一些复合组件。我将打包更改为JAR,并将其用作另一个项目的maven依赖项。

因此,服务器端的所有内容都在运行。 Spring注入了我的类和东西......但是找不到复合组件。我搜索stackoverflow,并看到一些引用JARs dirs的错误。但我不知道我是否将复合组件放在核心项目的正确目录上。这是我添加它的路径(通常,好像它是一个客户端项目):

  - br
       - main
              - webapp
                     - resources
                              - myCompositeFolder

这是对的吗? 如何更改maven包装以使其正常工作?

我还想问另一件事......我必须对复合组件进行成本化,从客户端项目中“注入”一些额外的代码。为此,我在组件上做了类似的事情:

<ui:include src="/filters/extraFilters.xhtml" />

并且该文件(extraFilters)将位于客户端项目webapp文件夹中。 我在同一个项目上测试过,它有效。只是不知道它是否可以从JAR加载!

2 个答案:

答案 0 :(得分:2)

得到应有的尊重,不需要额外的评论。请参阅Overlays

<强>共享库:罐

/src/main/java/A.java

<强>共享资源:战争

/src/main/webapp/resource/resources/default/1_0/images/a.png
/src/main/webapp/resource/resources/default/1_0/scripts/a.js
/src/main/webapp/resource/resources/default/1_0/stylesheets/a.css

<强>最终web应用:战/ pom.xml的

<project ...>
  <artifactId>final-webapp</artifactId>
  <packaging>war</packaging>
  <dependencies>
    <dependency>
      <artifactId>shared-library</artifactId>
    </dependency>
    <dependency>
      <artifactId>shared-resource</artifactId>
      <scope>runtime</scope>
      <type>war</type>
    </dependency>    
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
          <overlay>
            <artifactId>shared-library</artifactId>
            <excludes/>
          </overlay>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

<强>最终web应用:战争

/resource/resources/default/1_0/images/a.png
/resource/resources/default/1_0/scripts/a.js
/resource/resources/default/1_0/stylesheets/a.css
WEB-INF/lib/common-library.jar

答案 1 :(得分:1)

我在没有WAR的情况下工作了。

感谢Visola(http://bearprogrammer.com/)。解决方案是: 但是父(核心)项目中的复合文件夹:

 src\resources\META-INF\resources

而且,完成了!一体化JAR!

感谢BalusC,Visola和Jin!