2016-03-01 2 views
0

В моем проекте у меня есть файл свойств, который я использую для установки уровня ведения журнала. Теперь, когда я экспортирую свой проект в качестве банки и использую его для запуска проекта на удаленном компьютере (linux), я не могу установить уровень. Есть ли способ сохранить файл свойств за пределами файла jar таким образом, чтобы я мог установить уровень и заставить jar читать этот файл свойств. (Предпочитают использовать переменное окружение)java.util.logger.Logging: сохранение файла logger.properties за пределами файла jar

ответ

0

Есть несколько способов для достижения этой цели, например:

  • Настройка IDE экспортировать ресурсы за пределами ЕАО: обычно я не считаю этот вариант поскольку конкретные решение зависит от IDE разработчика
  • использовать общий сборки инструмента, например, Ant, и указать в build.xml файла, файлы свойств должны быть упакованы вне баночке
  • Inte тереть свой проект с Maven и настроить цель пакета для того, чтобы скопировать некоторые специфические свойства файла вне баночку

Из вашего вопроса я думаю, вы экспортируете JAR из вашего IDE, но, как я уже говорил выше решения зависит по IDE. По этой причине, чтобы принять независимое решение IDE, я бы предложил использовать Ant. Это позволит вам решить эту и многие подобные проблемы, которые могут возникнуть в будущем.

Вы можете получить Ant here: просто загрузите и распакуйте его в любой папке, это займет пару минут. Затем добавьте ссылку на каталог Ant bin в свою переменную PATH (не обязательно, но рекомендуется) и создайте образец build.xml. Вот это пример шаблона:

<project name="template" default="compile" basedir="."> 

    <description>Build file template</description> 

    <property name="project.name"  value="myProject"/> 
    <property name="driver.log"  value="log4j-1.2.15.jar"/> 
    <property name="driver.database" value="ojdbc6.jar"/> 
    <property name="library.home"  value="lib"/> 
    <property name="env.type"   value="dev"/> 
    <property name="src.version"  value="Demo" /> 
    <property name="src.folder"  value="root/folder/template"/> 
    <property name="src.package"  value="root.folder.template"/> 
    <property name="src.home"   value="${basedir}/src/${src.folder}"/> 
    <property name="dist.home"  value="${basedir}/dist"/> 
    <property name="build.home"  value="${basedir}/build"/> 
    <property name="docs.home"  value="${basedir}/docs"/> 

    <!-- Setting the classpath necessary to compile --> 
    <path id="compile.classpath"> 
    <pathelement location="${library.home}/${driver.log}"/> 
    <pathelement location="${library.home}/${driver.database}"/> 
    </path> 

    <!-- DELETE the class files from the ${build.home} directory tree --> 
    <target name="clean" description="Clean up the build folder"> 
    <delete dir="${build.home}"/> 
    <delete dir="${dist.home}"/> 
    </target> 

    <!-- CREATE the build directory structure used by compile --> 
    <target name="init" description="Creates the necessary directories"> 
    <mkdir dir="${dist.home}"/> 
    <mkdir dir="${build.home}"/> 
    </target> 

    <!-- COMPILE the project and copy all necessary resources --> 
    <!-- Options: <compilerarg value="-Xlint"/>    --> 
    <target name="compile" depends="init" description="Compile the sources"> 
    <javac srcdir="${src.home}" destdir="${build.home}" includeantruntime="false"> 
     <classpath refid="compile.classpath"/> 
    </javac> 
    <copy todir="${build.home}/${src.folder}/resources"> 
     <fileset dir="${src.home}/resources"> 
     <include name="messages_list.properties"/> 
     <include name="messages_list_en.properties"/> 
     </fileset> 
    </copy> 
    <copy file="${src.home}/resources/log4j_${env.type}.properties"    tofile="${build.home}/${src.folder}/resources/log4j_${project.name}.properties"/> 
    <copy file="${src.home}/resources/configuration_${env.type}.properties"  tofile="${build.home}/${src.folder}/resources/${project.name}_config.properties"/> 
    </target> 

    <!-- Creates the DISTRIBUTABLE JAR package and add 3d part libraries --> 
    <target name="dist" description="Create the distributable JAR archive"> 
     <jar destfile="${dist.home}/${project.name}.jar"> 
     <fileset dir="${build.home}"> 
     <exclude name="place_holder\"/> 
     </fileset> 
     <!-- Setting MANIFEST properties --> 
     <manifest> 
     <section name="${ant.project.name} - ver. ${src.version}"> 
      <attribute name="Built_By" value="${user.name}"/> 
      <attribute name="Created"  value="${ts}"/> 
     </section> 
     <attribute name="Main-Class" value="package.mine.MainClass"/> 
     <attribute name="Class-Path" value=". lib/${driver.log} lib/${driver.database}"/> 
     </manifest> 
    </jar> 
    <!-- Adding third part libraries --> 
    <mkdir dir="${dist.home}/lib"/> 
    <copy file="${library.home}/${driver.database}"  todir="${dist.home}/lib"/> 
    <copy file="${library.home}/${driver.log}"   todir="${dist.home}/lib"/> 
    </target> 
    <tstamp><format property="ts" pattern="dd/MM/yyyy HH:mm:ss" /></tstamp> 
    </project> 

Примечание: в шаблон выше, вы должен заменить образцы баночек (log4j и драйвер OJDBC) с фактическими БАНКАМИ, необходимых вашим проектом. Затем вы можете настроить задачу , чтобы разместить файлы свойств по своему желанию. Вы можете скопировать эти файлы в любой каталог, который вам нравится, если такой путь появляется в пути к классам приложения.