SVN, Eclipse и Java - PullRequest
       4

SVN, Eclipse и Java

0 голосов
/ 25 февраля 2010

Мне просто интересно, каково решение для настройки SVN и его развертывания на внешнем сервере только с файлами JSP и классов.Как избавиться от папки src при развертывании.Как правильно это настроить.Я просто хочу, чтобы несколько пользователей могли выполнять работу, включая файлы src, но когда они развернуты на производственном сервере, я бы хотел, чтобы структура файлов исключала папки src, .project, .classpath и т. Д., Которые мне не нужны.

Ответы [ 2 ]

2 голосов
/ 25 февраля 2010

Напишите скрипт (я использую ant для таких java-проектов), который продвигает / копирует в вашу производственную среду именно то, что вы хотите.

В моем случае, скрипты для муравьев:

  1. Создать каталог tmp,
  2. Копирует определенные файлы из исходных деревьев в новую файловую структуру (часто точно такую ​​же, как исходные, только не в исходных папках, за исключением .svn и других файлов, которые мне не нужны ( файлы .java, а не файлы .class или jar и т. д.)
  3. Компилирует и архивирует что нужно
  4. Выполняет поиск / замену в файлах конфигурации (чтобы разрешить развертывание в промежуточных, dev, qa или производственных средах, которые могут отличаться
  5. Сжатие целиком и копирование (scp) на целевой сервер, если удаленный
  6. Останавливает все существующие запущенные приложения
  7. распаковывает новую версию
  8. Запускает новое приложение

В некоторых проектах у меня есть возможность загружать только что измененные файлы вместо того, чтобы заново развертывать целые приложения, но это выбор дизайна, который вы сами сделаете. Для более крупных проектов, над которыми я работал, я старался развертывать проект целом для каждого обновления, а не копировать отдельные файлы / изменения на сервер. Таким образом, я могу обеспечить целостность процесса сборки и производственной среды, и мне не придется беспокоиться о том, что случайные файлы могут быть не синхронизированы с остальной частью проекта.

Как правило, для чего-то другого, кроме простейшего проекта, вам понадобится реальная среда сборки / сборки ... которую вы должны будете написать сами.

Ant

Maven

сценарии оболочки

сделать

все возможные решения.

</p> <pre><code><!-- **************** USAGE (DEFAULT) --> <target name="usage"> <!-- echo detailed usage instructions here --> </target> <!-- ************************************************** --> <!-- ******************* WAS 4.0 WORKER TARGETS --> <target name="init" depends="validenvironment"> <tstamp/> <echo>Build of ${ant.project.name} started at ${TSTAMP} on ${TODAY} </echo> </target> <target name="inittomcat"> <delete dir="tomcatdeploy" /> <mkdir dir="tomcatdeploy" /> </target> <target name="initapache"> <delete dir="apacheconfig" /> <mkdir dir="apacheconfig" /> </target> <!-- validates that you've specified an environment (production, dev, staging etc.) from an allowed list --> <target name="validenvironment"> <condition property="valid.environment"> <or> <equals arg1="${penvironment}" arg2="dev" /> <equals arg1="${penvironment}" arg2="qa" /> <equals arg1="${penvironment}" arg2="staging" /> <equals arg1="${penvironment}" arg2="prod" /> </or> </condition> <fail message="Invalid target ${penvironment}." unless="valid.environment" /> </target> <!-- validates that you've specified a target server to deploy to. Only checks to see if the propery is set, not actual values --> <target name="validserver"> <condition property="valid.server"> <isset property="pserver" /> </condition> <fail message="Invalid server ${pserver}. You must specifiy a server for this target." unless="valid.server" /> </target> <target name="initwar"> <delete dir="tmp/war" /> <mkdir dir="tmp/war" /> <mkdir dir="tmp/war/WEB-INF" /> <mkdir dir="tmp/war/WEB-INF/classes" /> <mkdir dir="tmp/war/WEB-INF/lib" /> <mkdir dir="tmp/war/tags" /> <mkdir dir="tmp/war/images" /> <mkdir dir="tmp/war/javascript" /> <mkdir dir="tmp/war/html" /> <mkdir dir="tmp/war/components" /> </target> <target name="war" depends="initwar" if="penvironment"> <echo>Compiling source files...</echo> <ant antfile="build.xml" dir="classes/" target="compile" inheritAll="false" > <property name="penvironment" value="${penvironment}" /> </ant> <echo>Compile done.</echo> <copy todir="tmp/war/WEB-INF/classes" preservelastmodified="true" > <fileset dir="classes/build" includes="**/*.class" /> </copy> <copy todir="tmp/war/WEB-INF/controller_jsp" preservelastmodified="true" > <fileset dir="controller" includes="**/*.*" /> </copy> <copy todir="tmp/war/WEB-INF" preservelastmodified="true" > <fileset dir="build" includes="**/*.xsl" /> </copy> <copy todir="tmp/war/WEB-INF/lib" preservelastmodified="true" > <fileset dir="build/lib${penv}" includes="**/*.*" /> </copy> <copy todir="tmp/war/html" preservelastmodified="true" > <fileset dir="html" includes="**/*.*" /> </copy> <copy todir="tmp/war/components" preservelastmodified="true" > <fileset dir="components" includes="**/*.*" /> </copy> <copy todir="tmp/war/" preservelastmodified="true" > <fileset dir="root" includes="**/*.*" /> </copy> <copy todir="tmp/war/pages" preservelastmodified="true" > <fileset dir="pages" includes="**/*.*" /> </copy> <copy todir="tmp/war/tags" preservelastmodified="true" > <fileset dir="tags" includes="**/*.*" /> </copy> <copy todir="tmp/war/images" preservelastmodified="true" > <fileset dir="images" includes="**/*.*" /> </copy> <copy todir="tmp/war/javascript" preservelastmodified="true" > <fileset dir="javascript" includes="**/*.*" /> </copy> <!-- copy the web.xml for the target environment into the temp war directory --> <copy tofile="tmp/war/WEB-INF/web.xml" file="xonfig/$penvironment}.web.xml" preservelastmodified="true" > </copy> <!-- now replace all properties in the web.xml file with their values from ${penvironment}.properties --> <echo>Replacing all properties in the web.xml file with their values from ${penvironment}.properties</echo> <replace file="tmp/war/WEB-INF/web.xml" propertyFile="config/${penvironment}.properties"> <replacefilter token="%%HOSTNAME%%" property="webxml.hostname" /> </replace> <copy tofile="tmp/war/WEB-INF/application.properties" file="config/application.properties" preservelastmodified="true" > </copy> <!-- now replace all properties in the application.properties file with their values from ${penvironment}.properties --> <echo>Replacing all properties in the crm.properties file with their values from ${penvironment}.properties</echo> <replace encoding="ISO-8859-1" file="tmp/war/WEB-INF/application.properties" propertyFile="build/${penvironment}.properties"> <replacefilter token="%%HOSTNAME%%" property="hostname" /> <replacefilter token="%%EMAILADDRESS%%" property="emailaddress" /> <replacefilter token="%%LOGFILE%%" property="logfile" /> <replacefilter token="%%LOGLEVEL%%" property="loglevel" /> <replacefilter token="%%DEFAULTPAGE%%" property="defaultpage" /> <replacefilter token="%%MAILSERVER%%" property="mailserver" /> <replacefilter token="%%SUPPORTEDLANGUAGES%%" property="supportedlanguages" /> <replacefilter token="%%LDAPHOST%%" property="ldaphost" /> <replacefilter token="%%LDAPHOSTBACKUP%%" property="ldaphostbackup" /> <replacefilter token="%%LDAPPORT%%" property="ldapport" /> <replacefilter token="%%LDAPVER%%" property="ldapver" /> <replacefilter token="%%LDAPDC%%" property="ldapdc" /> <replacefilter token="%%LDAPPW%%" property="ldappw" /> <replacefilter token="%%LDAPUSERDC%%" property="ldapuserdc" /> <replacefilter token="%%LDAPSEARCH%%" property="ldapsearch" /> <replacefilter token="%%DATASCHEMA%%" property="dataschema" /> </replace> <copy tofile="tmp/war/WEB-INF/navigation.properties" file="config/${penvironment}.maxnavigation.properties" preservelastmodified="true" > </copy> <copy todir="tmp/war/WEB-INF" preservelastmodified="true" > <fileset dir="config/bundle" includes="**/*.*" /> </copy> <!-- Create war file NOT USED right now as we're building this directly into the tomcat directory--> <!--jar jarfile="tmp/${penvironment}.war" basedir="tmp/war" --> </target> <target name="buildtomcat" depends="war,inittomcat,validenvironment" if="penvironment"> <mkdir dir="tmp/tomcatdeploy/${penvironment}" /> <delete> <fileset dir="tomcat/6.x/logs" includes="**/*.log"/> </delete> <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat" preservelastmodified="true" > <fileset dir="tomcat/6.x" includes="**/*.*" /> </copy> <mkdir dir="tmp/tomcatdeploy/${ppenvironment}/tomcat/logs" /> <mkdir dir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" /> <copy todir="tmp/tomcatdeploy/${penvironment}/tomcat/webapps/${tomcat.contextroot}" preservelastmodified="true" > <fileset dir="tmp/war" includes="**/*.*" /> </copy> <!-- now copy the tomcat config files --> <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" overwrite="true" file="config/context.xml" preservelastmodified="true" > </copy> <!-- now replace all variables in context.xml --> <replace encoding="ISO-8859-1" file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" token="%%JDBCNAME%%" value="${context.jdbcname}" /> <replace encoding="ISO-8859-1" file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" token="%%JDBCUSER%%" value="${context.jdbcuser}" /> <replace encoding="ISO-8859-1" file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" token="%%JDBCPASSWORD%%" value="${context.jdbcpassword}" /> <replace encoding="ISO-8859-1" file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" token="%%JDBCDRIVER%%" value="${context.jdbcdriver}" /> <replace encoding="ISO-8859-1" file="tmp/tomcatdeploy/${penvironment}/tomcat/conf/context.xml" token="%%JDBCURL%%" value="${context.jdbcurl}" /> <!-- now replace all variables / ports in server.xml --> <copy tofile="tmp/tomcatdeploy/${penvironment}/tomcat/conf/server.xml" overwrite="true" file="config/server.xml" preservelastmodified="true" > </copy> <!-- deleted for this example --> <!-- END replace all variables / ports in server.xml --> <!-- Now, replace CONTEXT in catalina.sh and catalina.bat --> <replace encoding="ISO-8859-1" file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.sh" propertyFile="/config/${penvironment}.properties"> <replacefilter token="%%CONTEXT%%" property="tomcat.contextroot" /> </replace> <replace encoding="ISO-8859-1" file="tmp/tomcatdeploy/${penvironment}/tomcat/bin/catalina.bat" propertyFile="/config/${penvironment}.properties"> <replacefilter token="%%CONTEXT%%" property="tomcat.contextroot" /> </replace> </target> <target name="deployfullapplication" depends="validenvironment,validserver" > <antcall target="deploytomcat" /> <antcall target="deployapacheconfig" /> <antcall target="restartapache" /> </target> <target name="deploytomcat" depends="buildtomcat" > <!-- zip the tomcatdeploy directoyr up --> <zip destfile="tmp/${penvironment}.zip" basedir="tmp/tomcatdeploy" /> <!-- now scp to the server --> <echo>Copying "tmp/${penvironment}.zip" to "${webuser}@${pserver}:/opt/www"</echo> <scp remoteToDir="${webuser}@${pserver}:/opt/www" file="tmp/${penvironment}.zip" verbose="true" failonerror="true" trust="true"> </scp> <!-- now kill existing process on the server --> <antcall target="stoptomcat" /> <!-- now archive the existing deployed application on the server to ${penvironment}.${currenttimestamp} --> <antcall target="archivetomcat" /> <!-- now uncompress the zipped archive into the deployed location /opt/www/${penvironment} --> <antcall target="unzipremotetomcat" /> <!-- now start the application --> <antcall target="starttomcat" /> <!-- cool. thats it. good job. --> <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. --> </target> <target name="restarttomcat" depends="validenvironment,validserver" > <antcall target="stoptomcat"/> <antcall target="starttomcat"/> </target> <target name="starttomcat" unless="pnostart" if="pserver" depends="validenvironment,validserver"> <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. --> </target> <target name="unzipremotetomcat" if="pserver" depends="validenvironment,validserver"> <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. --> </target> <target name="archivetomcat" if="pserver" depends="validenvironment,validserver"> <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. --> </target> <target name="stoptomcat" unless="pnokill" if="pserver" depends="validenvironment,validserver"> <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. --> </target> <target name="killtomcatprocessonecall" depends="validenvironment,validserver"> <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. --> </target> <target name="restartapache" depends="validenvironment,validserver" > <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. --> </target> <target name="deployapacheconfig" depends="configapache,validserver"> <!-- all the remote tasks have been deleted in this example.... just to get the idea of what to do. --> </target> <target name="configapache" if="penv" depends="init,validenvironment"> <mkdir dir="tmp/apacheconfig" /> <mkdir dir="tmp/apacheconfig/vhosts.d" /> <mkdir dir="tmp/apacheconfig/ssl.crt" /> <mkdir dir="tmp/apacheconfig/ssl.key" /> <mkdir dir="tmp/apacheconfig/extra" /> <mkdir dir="tmp/apacheconfig/passwords" /> <echo>Copying http base config files...</echo> <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.conf" file="config/apache/vhosts/http.conf" preservelastmodified="true" /> <echo>http only replace in http config file...</echo> <replace encoding="ISO-8859-1" file="tmp/apacheconfig/vhosts.d/${penvironment}.conf" propertyFile="config/${penvironment}.properties"> <replacefilter token="%%SERVERADMIN%%" property="httpd.serveradmin" /> <replacefilter token="%%LOGFILE%%" property="httpd.logfile" /> <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" /> <replacefilter token="%%ROOT%%" property="httpd.root" /> <replacefilter token="%%HOSTIP%%" value="*" /> <replacefilter token="%%PORT%%" value="80" /> <replacefilter token="%%PROTOCOL%%" value="http" /> <replacefilter token="%%SSL%%" value="off" /> <replacefilter token="%%SSLCERT%%" value="" /> <replacefilter token="%%SSLKEY%%" value="" /> <replacefilter token="%%SSLCACERT%%" value="" /> <replacefilter token="%%CONTEXTROOT%%" property="tomcat.contextroot" /> <replacefilter token="%%AJPPORT%%" property="port.ajp13" /> <replacefilter token="%%DEFAULTPAGE%%" property="http.defaultpage" /> <replacefilter token="%%ERRORPAGE%%" property="http.errorpage" /> </replace> <condition property="dossl"> <and> <isset property="${penvironment}.ssl.ip" /> </and> </condition> <antcall target="apachessl" /> </target> <target name="apachessl" if="dossl"> <copy tofile="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf" file="apache/vhosts/http.conf" preservelastmodified="true" /> <echo>https only replace in https config file...</echo> <replace encoding="ISO-8859-1" file="tmp/apacheconfig/vhosts.d/${penvironment}.s.conf" propertyFile="config/${penvironment}.properties"> <replacefilter token="%%SERVERADMIN%%" property="httpd.serveradmin" /> <replacefilter token="%%LOGFILE%%" property="httpd.logfile" /> <replacefilter token="%%HOSTNAME%%" property="httpd.hostname" /> <replacefilter token="%%ROOT%%" property="httpd.root" /> <replacefilter token="%%PORT%%" value="443" /> <replacefilter token="%%PROTOCOL%%" value="https" /> <replacefilter token="%%SSL%%" property="httpd.ssl" /> <replacefilter token="%%SSLCERT%%" property="https.sslcert" /> <replacefilter token="%%SSLKEY%%" property="https.sslkey" /> <replacefilter token="%%SSLCACERT%%" property="https.sslcacert" /> <replacefilter token="%%CONTEXTROOT%%" property="tomcat.contextroot" /> <replacefilter token="%%AJPPORT%%" property="port.ajp13" /> <replacefilter token="%%JKWORKER%%" property="tomcat.jkworker" /> <replacefilter token="%%DEFAULTPAGE%%" property="http.defaultpage" /> <replacefilter token="%%ERRORPAGE%%" property="http.errorpage" /> </replace> <copy tofile="tmp/apacheconfig/ssl.crt/${penvironment}.cert" file="config/apache/ssl.crt/${penvironment}.cert" failonerror="false" preservelastmodified="true" /> <copy tofile="tmp/apacheconfig/ssl.crt/verisign.intermediate.cert" file="config/apache/ssl.crt/verisign.intermediate.cert" failonerror="false" preservelastmodified="true" /> <copy tofile="tmp/apacheconfig/ssl.crt/network.solutions.ca.cert" file="config/apache/ssl.crt/network.solutions.ca.cert" failonerror="false" preservelastmodified="true" /> <copy tofile="tmp/apacheconfig/ssl.key/${penvironment}.key" file="config/apache/ssl.key/${penvironment}.key" failonerror="false" preservelastmodified="true" /> </target>

1 голос
/ 25 февраля 2010

Простым решением было бы создание файла сборки Ant, который может собрать исходный код, JSP и упаковать все в файл .war, который затем можно будет развернуть на сервере приложений.

Если вы хотите использовать решение только для Eclipse, обратите внимание на создание проекта с использованием шаблона проекта «Динамический веб-проект». Это должно позволить Eclipse упаковать ваш проект как файл .war, который вы затем сможете развернуть. Я полагаю, что Eclipse также позволяет вам настроить сервер приложений, который он затем может использовать для развертывания вашего проекта (лично я никогда не пробовал).

Если бы мне пришлось выбирать, я бы выбрал файл сборки Ant, потому что в будущем у вас будет меньше работы, если вы решите перейти к непрерывным / автоматическим сборкам.

...