2017-06-12 54 views
0

我认为包含在src/main/resources目录中的任何东西都会打包成WAR?为什么Maven不包括我的文件/src/main/resources/config.props?

我有以下结构:

src/main/resources/META-INF/... 
src/main/resources/config.props 

的META-INF包括,但config.props不是。我如何将它添加到WAR中?

<?xml version="1.0" encoding="UTF-8"?> 
<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>groupId</groupId> 
    <artifactId>MyWAR</artifactId> 
    <version>1.2</version> 

    <packaging>war</packaging> 

    <!-- Tell Maven what language version to use --> 
    <properties> 
     <maven.compiler.source>1.8</maven.compiler.source> 
     <maven.compiler.target>1.8</maven.compiler.target> 
    </properties> 

    <dependencies> 

     <!-- https://mvnrepository.com/artifact/javax.enterprise/cdi-api --> 
     <dependency> 
      <groupId>javax.enterprise</groupId> 
      <artifactId>cdi-api</artifactId> 
      <version>2.0</version> 
     </dependency> 

     <!-- Enables the annotations, etc needed --> 
     <dependency> 
      <groupId>javax</groupId> 
      <artifactId>javaee-api</artifactId> 
      <version>7.0</version> 
      <exclusions> 
       <exclusion> 
        <groupId>javax.exterprise</groupId> 
        <artifactId>cdi-api</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 

     <!-- Our jersey libs --> 
     <dependency> 
      <groupId>org.glassfish.jersey.containers</groupId> 
      <artifactId>jersey-container-servlet-core</artifactId> 
      <version>2.25.1</version> 
     </dependency> 

     <!-- CDI to JAX-RS Binding --> 
     <!-- https://mvnrepository.com/artifact/org.glassfish.jersey.containers.glassfish/jersey-gf-cdi-ban-custom-hk2-binding --> 
     <dependency> 
      <groupId>org.glassfish.jersey.containers.glassfish</groupId> 
      <artifactId>jersey-gf-cdi</artifactId> 
      <version>2.14</version> 
     </dependency> 

     <!-- Jackson --> 
     <dependency> 
      <groupId>org.glassfish.jersey.media</groupId> 
      <artifactId>jersey-media-json-jackson</artifactId> 
      <version>2.25.1</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/org.jboss.weld.servlet/weld-servlet-core --> 
     <dependency> 
      <groupId>org.jboss.weld.servlet</groupId> 
      <artifactId>weld-servlet-core</artifactId> 
      <version>3.0.0.Final</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/org.jboss.weld/weld-core-impl --> 
     <dependency> 
      <groupId>org.jboss.weld</groupId> 
      <artifactId>weld-core-impl</artifactId> 
      <version>3.0.0.Final</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.openjpa</groupId> 
      <artifactId>openjpa</artifactId> 
      <version>2.4.2</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.openjpa</groupId> 
      <artifactId>openjpa-maven-plugin</artifactId> 
      <version>2.4.2</version> 
     </dependency> 

    </dependencies> 

    <build> 

     <!-- We don't use the version number in the file name --> 
     <finalName>MyWAR</finalName> 

     <plugins> 

      <!-- Enhances the JPA classes --> 
      <plugin> 
       <groupId>org.apache.openjpa</groupId> 
       <artifactId>openjpa-maven-plugin</artifactId> 
       <version>2.4.2</version> 
       <executions> 
        <execution> 
         <id>JPA Enhance</id> 
         <phase>process-classes</phase> 
         <goals> 
          <goal>enhance</goal> 
         </goals> 
         <configuration> 
          <includes>**/push/*.class</includes> 
          <excludes>**/com/*.class,**/controller/*.class,**/dao/*.class,**/dto/*.class,**/service/*.class,**/util/*.class</excludes> 
          <persistenceXmlFile>${project.basedir}/src/main/resources/META-INF/persistence.xml</persistenceXmlFile> 
          <toolProperties> 
           <property> 
            <name>addDefaultConstructor</name> 
            <value>false</value> 
           </property> 
           <property> 
            <name>enforcePropertyRestrictions</name> 
            <value>true</value> 
           </property> 
          </toolProperties> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

     </plugins> 
    </build> 
</project> 
+1

你究竟在哪里搜索文件'config.props'?它应该被复制到目录“WEB-INF/classes”下的WAR中。 – Seelenvirtuose

+0

@Seelenvirtuose如何将它复制到WAR的根目录? –

回答

2

WAR文件的根目录不是资源,而是src/main/webapp。如果您想在WAR文件中直接在WEB-INF下的文件,请将它们放入src/main/webapp/WEB-INFsrc/main/resources下的资源将在您的WAR文件中以/WEB-INF/classes结尾。

例如,如果你的来源是这样的:

. 
|____ src 
| |____ main 
| | |____ resources 
| | | |____ config.props 
| | |____ webapp 
| | | |____ WEB-INF 
| | | | |_____ web.xml 
| | | |____ index.jsp 

你的WAR文件将是这样的:

. 
|____ WEB-INF 
| |____ classes 
| | |____ config.props 
| |____ web.xml 
|____ index.jsp 
2

缺省情况下,src/main/resources文件夹的内容在类路径的根copyied。正如Seelenvirtuose指出的那样,对于标准WAR,在WEB-INF/classes文件夹中。

相关问题