#ant
#ant
Вопрос:
Я хотел бы заменить путь к существующему jar на основе OS.
что-то вроде приведенного ниже:
в Windows: C:/apps/workspace/libs/rpm.jar
в unix: /user-id/projectname/libs/rpm.jar
Есть ли способ удалить C:/apps/workspace/libs из C:/apps/workspace/libs/rpm.jar .
редактирование моего вопроса в :
Спасибо, Лив, но у меня много подобных библиотек. прямо сейчас я поддерживаю текстовый файл под названием «build.start.properties» со всеми библиотеками, похожими на это
/gwt/X/2.1.0/gwt-servlet.jar
/gwt/X/2.1.0/gwt-user.jar /gwt/X/2.1.0/gwt-dev.jar
/gwt/X/2.1.0/gwt-soyc-vis.jar /log4j/X/1.2.15/log4j-1.2.15.jar /GWT_LOG/X/3.0.3/gwt-log-3.0.3.jar /GWT_MATH/X/2.1/gwt-math-2.1.jar /GWT_MATH/X/2.1/gwt-math-server-2.1.jar /GWT_Commons_Logging/X/0.3/GWT-commons-logging/gwt-commons-logging-0.3.jar
/GWT_Commons_Logging/X/0.3/GWT-commons-logging/gwt-commons-logging-service-0.3.jar
И загрузить их в classptah, используя нижеприведенную цель
<loadfile property="jars.list.property" srcfile="mybuild/build.start.properties">
<filterchain>
<expandproperties />
<striplinecomments>
<comment value="#" />
</striplinecomments>
<tokenfilter>
<ignoreblank />
</tokenfilter>
<prefixlines prefix="," />
<striplinebreaks />
</filterchain>
</loadfile>
<filelist id="build.libs" dir="" files="${jars.list.property}" />
<pathconvert targetos="unix" property="build_unix.libs" refid="build.libs">
<map from="C:" to="${unix.xenv}" />
<map from="" to="${unix.xenv}" />
</pathconvert>
<pathconvert targetos="windows" property="build_windows.libs" refid="build.libs">
<map from="C:" to="${windows.xenv}" />
<map from="" to="${windows.xenv}" />
</pathconvert>
<path id="build.classpath.id">
<pathelement path="${build_windows.libs}" />
<pathelement path="${build_unix.libs}" />
</path>
<echo message="Build Libraries classpath: ${toString:build.classpath.id}" />
</target>
из вышеупомянутой цели build.classpath.id выглядит так
/gwt/X/2.1.0/gwt-servlet.jar:/gwt/X/2.1.0/gwt-user.jar:/gwt/X/2.1.0/gwt-dev.jar:/gwt/X/2.1.0/gwt-soyc-vis.jar:/log4j/X/1.2.15/log4j-1.2.15.jar:/GWT_LOG/X/3.0.3/gwt-log-3.0.3.jar:GWT_MATH/X/2.1/gwt-math-2.1.jar:/GWT_MATH/X/2.1/gwt-math-server-2.1.jar:/GWT_Commons_Logging/X/0.3/GWT-commons-logging/gwt-commons-logging-0.3.jar:/GWT_Commons_Logging/X/0.3/GWT-commons-logging/gwt-commons-logging-service-0.3.jar
Когда я работаю в unix, я должен отображать только имена jar из файла «build.start.properties» и обновлять путь следующим образом
/WebContent/WEB_INF/lib/gwt-servlet.jar:/WebContent/WEB_INF/lib/gwt-user.jar:/WebContent/WEB_INF/lib/gwt-dev.jar:/WebContent/WEB_INF/lib/gwt-soyc-vis.jar:/WebContent/WEB_INF/lib/log4j-1.2.15.jar:/WebContent/WEB_INF/lib/gwt-log-3.0.3.jar:/WebContent/WEB_INF/lib/gwt-math-2.1.jar:/WebContent/WEB_INF/lib/gwt-math-server-2.1.jar:/WebContent/WEB_INF/lib/gwt-commons-logging-0.3.jar:/WebContent/WEB_INF/lib/gwt-commons-logging-service-0.3.jar
Ответ №1:
Всегда используйте относительные пути, таким образом, вы не будете полагаться на библиотеку, находящуюся в данном местоположении, и на базовую ОС.
Хотя это не отвечает на то, что вы точно просили, но предложение поможет вам в долгосрочной перспективе. Также, если возможно, используйте Ivy Ant (или Maven) для управления зависимостями.
Ответ №2:
вы можете использовать задачу ant — следующее взято из документации (http://ant.apache.org/manual/Tasks/condition.html ):
<condition property="isMacOsButNotMacOsX">
<and>
<os family="mac"/>
<not>
<os family="unix"/>
</not>
</and>
</condition>
Комментарии:
1. Спасибо, Лив, но у меня много подобных библиотек. прямо сейчас я поддерживаю текстовый файл со всеми библиотеками, примерно такими
2. вы все еще можете это сделать и настроить переменную окружения, в которой хранится базовый путь. просто инициализируйте путь к этой переменной (назовем ее lib_path) путем Windows: <имя свойства=»lib_path» значение =»c:/apps/workspace/libs «/> затем вы используете <условие>, чтобы проверить, unix это или нет, и присваиваете значение пути unix, если это так: <свойство условия=»lib_path» value=»/usr/project /libs /»>…</condition> и затем используете эту переменную для ссылки на библиотеку $ {lib_path}/rpm.jar — имеет ли это смысл?