передача параметра из build.xml в файл Java - PullRequest
1 голос
/ 01 июля 2011

когда я запускаю тестовый файл java (один файл) через eclipse, передавая аргументы

-DappRoot = ECM -DappName = ESW -Dapp.module = FNT -Dapp.env = LOC -DcloneNumber = 1

Тестовый файл выполняется без ошибок, если я не привожу аргументы, возникает ошибка, так как не удалось разрешить заполнитель appRoot.

У меня есть цель junit для генерации отчета в формате html.

<target name="junit" depends="init-junit">
        <junit printsummary="on" fork="yes" forkmode="perBatch" haltonfailure="false" failureproperty="junit.failure" showoutput="false">           
            <classpath>
                <path refid="CLASSPATH_JUNIT"/>             
            </classpath>            
            <batchtest fork="no"  todir="${TEST_BUILD_DIR}">
               <fileset dir="${COMP_TEST_SRC}">                           
                  <include name="**/*Test.java" />          
               </fileset>              
            </batchtest>
            <formatter type="xml" />
        </junit>        
        <junitreport todir="${JUNIT_REPORT}">
            <fileset dir="${TEST_BUILD_DIR}">
                <include name="TEST-*.xml" />           
            </fileset>       
            <report format="frames" todir="${JUNIT_REPORT}"/>       
        </junitreport>          
    </target>       

Когда я запускаю выше сценария сборки, получаю следующую ошибку: Не удалось разрешить заполнитель appRoot, где он был передан в качестве аргумента.

Я передал параметр build.xml через eclipse, этот параметр передается в файл build.xml, но не передается в файлы java. Как я могу решить это?

EDIT: пробовал со следующим параметром:

<junit printsummary="on" fork="yes" forkmode="perBatch" haltonfailure="false" failureproperty="junit.failure" showoutput="false">           
    <jvmarg value="-DappRoot=ECM" />
    <jvmarg value="-DappName=ESW" />
    <jvmarg value="-Dapp.module=FNT" />
    <jvmarg value="-Dapp.env=LOC" />
    <jvmarg value="-DcloneNumber=1" />
    <!--<sysproperty key="appRoot" value="${appRoot}"/>
    <sysproperty key="appName" value="${appName}"/>
    <sysproperty key="app.module" value="${app.module}"/>
    <sysproperty key="app.env" value="${app.env}"/>
    <sysproperty key="cloneNumber" value="${cloneNumber}"/>-->
    <classpath>
        <path refid="CLASSPATH_JUNIT"/>             
    </classpath>

с системным параметром, он работает нормально, но выполняется очень долго. с jvmarg это не работает. та же ошибка с

 <jvmarg value="-DappRoot=${appRoot}" />

http://ant.apache.org/manual/Tasks/junit.html не определяет никаких ограничений для аргументов sys и jvm.

Ответы [ 2 ]

1 голос
/ 01 июля 2011

Вы установили fork="no" в элементе batchtest, который переопределяет параметр fork в элементе junit. Это приводит к тому, что задача junit выполняется в той же JVM, что и процесс ant, что означает, что параметры jvmarg будут игнорироваться.

Я бы также рекомендовал использовать режим разветвления "Once" это значительно улучшит производительность.

Попробуйте это:

<junit printsummary="on" fork="yes" forkmode="once" maxmemory="512m"
       haltonfailure="false" failureproperty="junit.failure"
       showoutput="false">           
    <jvmarg value="-DappRoot=ECM" />
    <jvmarg value="-DappName=ESW" />
    <jvmarg value="-Dapp.module=FNT" />
    <jvmarg value="-Dapp.env=LOC" />
    <jvmarg value="-DcloneNumber=1" />
    <classpath>
        <path refid="CLASSPATH_JUNIT"/>             
    </classpath>            
    <batchtest todir="${TEST_BUILD_DIR}">
       <fileset dir="${COMP_TEST_SRC}">                           
          <include name="**/*Test.java" />          
       </fileset>              
    </batchtest>
    <formatter type="xml" />
</junit>

Обратите внимание на атрибут maxmemory. При необходимости измените значение.

1 голос
/ 01 июля 2011

Документация задачи junit ant показывает это:

<junit fork="yes" ...>
    <jvmarg value="-DappRoot=ECM" />
</junit>

Если свойство appRoot передается как системное свойство в ant, вы можете получить к нему доступ как свойство ant:

<junit fork="yes" ...>
    <jvmarg value="-DappRoot=${appRoot}" />
</junit>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...