Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring Maven公开属性文件appassembler_Spring_Maven_Properties_Appassembler - Fatal编程技术网

Spring Maven公开属性文件appassembler

Spring Maven公开属性文件appassembler,spring,maven,properties,appassembler,Spring,Maven,Properties,Appassembler,要加载特定于环境的值,在我的src/main/resources文件夹中,我在不同的子文件夹中有一些属性文件,例如 com/app/ws/webservices-dev.properties com/app/ws/webservices-test.properties com/app/jms/jms-dev.properties com/app/jms/jms-test.properties 我通过spring加载这些属性 <bean id="placeholderProperties

要加载特定于环境的值,在我的src/main/resources文件夹中,我在不同的子文件夹中有一些属性文件,例如

  • com/app/ws/webservices-dev.properties
  • com/app/ws/webservices-test.properties
  • com/app/jms/jms-dev.properties
  • com/app/jms/jms-test.properties
我通过spring加载这些属性

<bean id="placeholderProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>              
            <value>classpath:/com/app/jms/jms-${ENVIRONMENT:dev}.properties</value>
            <value>classpath:/com/app/ws/webservices-${ENVIRONMENT:dev}.properties</value>
        </list>
    </property>
    <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
    <property name="ignoreResourceNotFound" value="true" />
    <property name="ignoreUnresolvablePlaceholders" value="true" />
    <property name="order" value="0" />
</bean>

classpath:/com/app/jms/jms-${ENVIRONMENT:dev}.properties
classpath:/com/app/ws/webservices-${ENVIRONMENT:dev}.properties
环境是环境变量

我正在使用appassembler maven插件生成可执行文件.sh

       <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>appassembler-maven-plugin</artifactId>
            <version>1.2.2</version>
            <configuration>
                <binFileExtensions>
                    <unix>.sh</unix>
                </binFileExtensions>
                <programs>
                    <program>
                        <mainClass>com.app.MainApp</mainClass>
                        <name>MainApp</name>
                    </program>
                </programs>
            </configuration>
        </plugin>

org.codehaus.mojo
appassembler maven插件
1.2.2
sh先生
com.app.MainApp
主控制程序
因此,我的所有属性文件都成为我生成的jar文件的一部分。我想公开一些属性,以便在部署时设置它们的值。我尝试了以下配置

       <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>appassembler-maven-plugin</artifactId>
            <version>1.2.2</version>
            <configuration>
                <configurationSourceDirectory>src/main/resources/com/app/bootstrap</configurationSourceDirectory>
                <configurationDirectory>conf</configurationDirectory>
                <copyConfigurationDirectory>true</copyConfigurationDirectory>
                <includeConfigurationDirectoryInClasspath>true</includeConfigurationDirectoryInClasspath> 
                <binFileExtensions>
                    <unix>.sh</unix>
                </binFileExtensions>
                <programs>
                    <program>
                        <mainClass>com.app.MainApp</mainClass>
                        <name>MainApp</name>
                    </program>
                </programs>
            </configuration>
        </plugin>           

org.codehaus.mojo
appassembler maven插件
1.2.2
src/main/resources/com/app/bootstrap
形态
符合事实的
符合事实的
sh先生
com.app.MainApp
主控制程序
但弹簧不加载特性;可能是由于spring配置中的给定路径(参见上文)


在打包期间,我应该使用什么maven配置来移动appassembler\conf文件夹中的属性文件,并让spring从类路径加载它们。我想要的是既适用于开发(在eclipse中,作为maven构建的单元测试)又适用于部署的配置。

如果您在src/main/resources中有资源,那么正如您所提到的,属性文件将已经打包到您的jar文件中。这意味着jar位于类路径上,这意味着它应该通过类路径加载属性。但我不明白的是给定的配置源//引导?谢谢khmarbaise。在jar中打包属性文件是我想要克服的问题。属性打包在jar中,在部署时不能更改。我想把它们从jar文件中删除。“configurationSource/。/bootstrap”引导是我的资源文件夹,其中包含属性文件。此配置复制assemblyHm的conf文件夹中的属性。对于单元测试,您应该将属性定位到src/test/resources中。如果您不想将属性打包到jar中,则需要将它们定位到不同的位置并自己处理(如appassembler插件src/main/config是configurationSourceDirectory的默认设置)。顺便说一句:我已经写了一篇关于此类问题的博客文章()。但是我如何才能在classpath中添加conf目录呢?如果您在src/main/resources中有资源,那么属性文件将被打包到您提到的jar文件中。这意味着jar位于类路径上,这意味着它应该通过类路径加载属性。但我不明白的是给定的配置源//引导?谢谢khmarbaise。在jar中打包属性文件是我想要克服的问题。属性打包在jar中,在部署时不能更改。我想把它们从jar文件中删除。“configurationSource/。/bootstrap”引导是我的资源文件夹,其中包含属性文件。此配置复制assemblyHm的conf文件夹中的属性。对于单元测试,您应该将属性定位到src/test/resources中。如果您不想将属性打包到jar中,则需要将它们定位到不同的位置并自己处理(如appassembler插件src/main/config是configurationSourceDirectory的默认设置)。顺便说一句:我写了一篇关于此类问题的博客文章()。但是我如何在类路径中添加conf目录呢?