从包含WAR文件的EAR文件中读取属性

时间:2015-11-11 12:47:03

标签: java rest maven java-ee version

我的属性文件存在一个小问题。我用maven生成一个dependency-tree.txt文件并将其存储在我的EAR文件中

EAR
  /META-INF
     dependency-tree.txt
  /lib
     some libs
  restservice.war

现在我想用REST服务显示dependency-tree.txt文件。我在restservice.war中开发了REST端点。

我可以访问存储在war文件之外但在ear文件中的dependency-tree.txt文件吗?

这个REST端点的原因是,我们希望为测试团队提供一个接口。通过这种方法,我们可以在没有任何手动步骤的情

或者让某人为我提供更好的解决方案?

由于

2 个答案:

答案 0 :(得分:1)

  

想法是在验证时运行插件maven-dependency-plugin:tree   阶段(maven生命周期中的1个阶段),并将文件(tree.txt)复制到   战争产生后你的战争的正确位置/   ear,该文件必须位于正确的位置以部署REST服务。

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <!-- because we will use the plugin org.apache.maven.plugins at validate 
                    phase, for Eclipse is happy , we'll ignore here -->
                <groupId>org.eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <lifecycleMappingMetadata>
                        <pluginExecutions>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>org.apache.maven.plugins</groupId>
                                    <artifactId>maven-dependency-plugin</artifactId>
                                    <versionRange>[2.10,)</versionRange>
                                    <goals>
                                        <goal>tree</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore />
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.10</version>
            <executions>
                <execution> <!-- -->
                    <id>generateTree</id>
                    <phase>validate</phase> <!-- You can change it , if you put 'test' , you can delete <pluginManagement> -->
                    <goals>
                        <goal>tree</goal>
                    </goals>
                    <configuration>
                        <outputFile>src/main/resources/tree_rest_access.txt</outputFile>
                        <!-- change location, exemple : you can use => restservice/src/main/webapp/tree/rest 
                            , and expose from controller "tree/rest/tree_rest_access.txt" -->
                    </configuration>
                </execution>
            </executions>
        </plugin>

答案 1 :(得分:0)

为什么要将它存储在EAR中!? EAR通常应仅包含WAR,如果您的服务器需要,则应包含另一个部署文件(例如jboss-deployment-structure.xml)。 EAR是将几个模块打包在一起的包装器,没有别的。

如果您有REST端点,并且希望它从项目中回馈资源,则可以通过将资源放入项目来实现此目的。在项目根目录中创建文件并从中读取文件可以通过在加载资源时使用相对路径轻松配置。更好的解决方案是明确定义用于存储此文件的外部位置,以使此位置可在某些应用程序config.properties文件中进行配置。在这种情况下,所有开发人员只需要在各自的配置中设置此路径。