将弹出批量导出到JAR时如何外部化XML文件

时间:2015-11-19 18:39:41

标签: java xml eclipse spring batch-file

所以我有一个程序,我导出到jar。这是一个Spring项目,它反复将数据库中的信息写入文本文件。有四个java文件:

<HDF5 dataset "00000001": shape (4,), type "<i8">

两个XML文件

JAVA FILES
    App.java
    Runscheduler.java
    Rowmapper.java

    pojoObject.java

以及两个配置文件

XML files
    job-request.xml
    database.xml

我有一个运行jar的批处理文件,一切正常。我必须外化的唯一文件是我的属性文件。

所以这就是问题所在。

当我将eclipse中的spring项目打包到一个可执行的jar中然后通过批处理(.bat)文件运行时,它会打包除“CONF”文件夹之外的所有内容。我必须将“CONF”文件夹放在与.bat和.jar文件相同的文件夹中。然后它完美运行。现在我也试图外化两个弹簧XML文件,但我不知道它们是如何与.jar一起打包的。 App.java(包含“main”函数)加载两个xml文件,如下所示:

CONF
    log4j.properties
    configuration.properties

但实际路径是

String[] springConfig  = 
        {   "spring/batch/config/database.xml", 
            "spring/batch/jobs/job-request.xml" 
        };

ApplicationContext context = 
            new ClassPathXmlApplicationContext(springConfig);

项目目录内。但是,当我尝试更改springConfig加载到resources / spring的路径时......它不起作用。

如果有任何方法可以打包XML文件,特别是作业请求,在.jar之外,仍然可以运行程序,请告诉我。谢谢!

编辑:对于任何想知道的人,我通过简单地导出为文件系统解决了这个问题。工作就像一个魅力。

1 个答案:

答案 0 :(得分:1)

我们有类似的情况。我们使用了ant jar target&#34;排除&#34;排除jar中不需要的xml文件。

<jar jarfile="${dir.dist}/ourjar.jar" 
         basedir="${dir.build}"
         includes="**/*.class"
         excludes="..."/>

我们按如下方式访问了外部xml文件

public class BootstrapBean {
   private File configFile;
   public void setConfigFile(Resource resource) {
      this.configFile = resource.getFile()
   }
  ...
}

XML配置

<bean id="bean" class="mypackage.BootstrapBean">
   <property name="file" value="file: a path to the xml file"/>
</bean>