{"id":200646,"date":"2013-11-02T20:17:02","date_gmt":"2013-11-02T16:17:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=200646"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=200646","title":{"rendered":"<span class=\"post_title\">\u0421\u0431\u043e\u0440\u043a\u0430 Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 Travis CI<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c Android \u043f\u0440\u043e\u0435\u043a\u0442\u044b (Maven) \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u043d\u0430 Travis CI.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h4>\u0427\u0442\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c?<\/h4>\n<p>  <\/p>\n<ul>\n<li> Android \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 github \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c<\/li>\n<li> \u041f\u0440\u043e\u0435\u043a\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f Maven<\/li>\n<li> \u0410\u043a\u043a\u0430\u0443\u043d\u0442 \u043d\u0430 Travis CI<\/li>\n<\/ul>\n<p>  <\/p>\n<h4>\u0427\u0442\u043e \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c?<\/h4>\n<p>  \u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0443\u044e \u0441\u0431\u043e\u0440\u043a\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u043e \u043a\u043e\u043c\u043c\u0438\u0442\u0443 \u0441 \u043e\u0442\u0447\u0451\u0442\u043e\u043c \u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043d\u0430 \u043f\u043e\u0447\u0442\u0443. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u043d\u0430 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b SDK (addons, extras \u0438 \u0442.\u0434.)<\/p>\n<h4>\u041a\u0430\u043a \u043d\u0430\u043c \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f?<\/h4>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u044b \u0431\u0435\u0440\u0451\u043c \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043d\u0430 github: <a href=\"https:\/\/github.com\/serso\/android-common\">https:\/\/github.com\/serso\/android-common<\/a>.<br \/>  \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 Travis CI \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u2014 .travis.yml:  <\/p>\n<pre><code class=\"bash\">language: java jdk: oraclejdk7  before_install:   - chmod +x $PWD\/.travis_install_android.sh   - $PWD\/.travis_install_android.sh    - export ANDROID_HOME=$PWD\/android-sdk-linux   - export PATH=${PATH}:${ANDROID_HOME}\/tools:${ANDROID_HOME}\/platform-tools    - chmod +x $PWD\/.travis_install_android_dependencies.sh   - $PWD\/.travis_install_android_dependencies.sh    - chmod +x $PWD\/.travis_start_emulator.sh   - $PWD\/.travis_start_emulator.sh  before_script:   - chmod +x $PWD\/.travis_wait_for_emulator.sh   - $PWD\/.travis_wait_for_emulator.sh  script: mvn install -Pwith-tests <\/code><\/pre>\n<p>  \u0412 \u043d\u0451\u043c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u2014 Java, \u0434\u0430\u043b\u0435\u0435 \u0432\u0435\u0440\u0441\u0438\u044f jdk \u2014 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e JDK 7 \u043e\u0442 Oracle. <br \/>  \u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Android SDK, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0435\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b (API, extras, addons, etc.). \u0417\u0430 \u044d\u0442\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 bash \u0441\u043a\u0440\u0438\u043f\u0442\u044b <b>.travis_install_android.sh<\/b> \u0438 <b>.travis_install_android_sdk.sh<\/b>. \u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b Android \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 Maven \u2014 \u0441\u043a\u0440\u0438\u043f\u0442 <b>.travis_install_android_dependencies.sh<\/b>, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u2014 <b>.travis_start_emulator.sh<\/b> \u0438 \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 <b>.travis_wait_for_emulator.sh<\/b>.<\/p>\n<h5>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Android<\/h5>\n<p>  <\/p>\n<pre><code class=\"bash\">#!\/bin\/bash  # Script installs Android SDK  sudo apt-get update -qq if [ `uname -m` = x86_64 ]; then sudo apt-get install -qq libstdc++6:i386 lib32z1; fi wget -O android-sdk.tgz http:\/\/dl.google.com\/android\/android-sdk_r22.0.4-linux.tgz tar xzf android-sdk.tgz  export ANDROID_HOME=$PWD\/android-sdk-linux export PATH=${PATH}:${ANDROID_HOME}\/tools:${ANDROID_HOME}\/platform-tools  sudo apt-get install expect chmod +x $PWD\/.travis_install_android_sdk.sh $PWD\/.travis_install_android_sdk.sh <\/code><\/pre>\n<p>  \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435: \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 64 \u0431\u0438\u0442\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u2014 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b (\u0441\u043c. \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435 <a href=\"http:\/\/stackoverflow.com\/questions\/14370763\/travis-ci-for-android\">\u0437\u0434\u0435\u0441\u044c<\/a>). \u0414\u0430\u043b\u0435\u0435 \u0432\u044b\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c, \u0440\u0430\u0437\u0430\u0440\u0445\u0438\u0432\u0438\u0440\u0443\u0435\u043c Android SDK \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f (\u0442.\u043a. \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432 bash \u0441\u043a\u0440\u0438\u043f\u0442\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u0431\u0440\u043e\u0448\u0435\u043d\u044b \u043f\u043e\u0441\u043b\u0435 \u0435\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0445 \u0435\u0449\u0451 \u0440\u0430\u0437 \u0432 .travis.yml).<\/p>\n<h5>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 Android SDK<\/h5>\n<p>  <\/p>\n<pre><code class=\"bash\">#!\/usr\/bin\/expect -f  # Script installs Android SDK components  spawn android update sdk --filter tools,platform-tools,build-tools-19.0.0,extra-android-support,android-17,sysimg-17,addon-google_apis-google-17,android-19,sysimg-19,addon-google_apis-google-19,addon-google_apis-google-19,extra-google-play_billing,extra-google-m2repository,extra-google-analytics_sdk_v2,extra-google-gcm,extra-google-google_play_services,extra-google-play_apk_expansion,extra-android-m2repository --no-ui --force --all expect &quot;Do you accept the license *:&quot; send -- &quot;y\\r&quot; expect &quot;Do you accept the license *:&quot; send -- &quot;y\\r&quot; expect &quot;Do you accept the license *:&quot; send -- &quot;y\\r&quot; expect &quot;Do you accept the license *:&quot; send -- &quot;y\\r&quot; expect &quot;Do you accept the license *:&quot; send -- &quot;y\\r&quot; expect &quot;Do you accept the license *:&quot; send -- &quot;y\\r&quot; expect &quot;Do you accept the license *:&quot; send -- &quot;y\\r&quot; interact  # WORKAROUND: for some reason we need to download following extras separately (otherwise we will get PkgVersion=2 instead of PkgVersion=2.0.0) spawn android update sdk --filter extra-google-admob_ads_sdk,extra-google-play_licensing --no-ui --force --all expect &quot;Do you accept the license *:&quot; send -- &quot;y\\r&quot; interact  <\/code><\/pre>\n<p>  \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435: \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u043d\u0430\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b SDK. \u0417\u0434\u0435\u0441\u044c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u044c \u2014 android update sdk \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0442\u044c \u043d\u0430\u043c \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0442\u044c\u0441\u044f \u0441 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f\u043c\u0438 \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u0438 \u0442.\u043a. \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0443 \u043d\u0430\u0441 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 (\u0441\u043a\u0440\u0438\u043f\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e), \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b spawn (\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b\u043b\u0430 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0437\u043e\u0432\u043e\u043c \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430). <br \/>  \u041f\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e, \u043d\u0435\u0432\u0435\u0434\u043e\u043c\u043e\u0439 \u043c\u043d\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u0435, android \u043f\u043e \u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u0432\u044b\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b admob \u0438 play_licensing. \u0415\u0441\u043b\u0438 \u0438\u0445 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 update, \u0442\u043e \u0432\u043c\u0435\u0441\u0442\u043e PkgVersion=2.0.0 \u0431\u0443\u0434\u0435\u0442 PkgVersion=2, \u0447\u0442\u043e \u043d\u0430\u0441 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 (\u0442.\u043a. \u044d\u0442\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0432\u0435\u0440\u0441\u0438\u044e \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u0430 \u0432 Maven repository).<\/p>\n<h5>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 Maven<\/h5>\n<p>  <\/p>\n<pre><code class=\"bash\">#!\/bin\/bash  # Scripts installs Android SDK artifacts in local Maven repository  git clone git:\/\/github.com\/serso\/maven-android-sdk-deployer.git cd .\/maven-android-sdk-deployer\/ git checkout tags\/api-19 mvn install -P4.2 cd .. <\/code><\/pre>\n<p>  \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435: \u0432\u044b\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0444\u043e\u0440\u043a <a href=\"https:\/\/github.com\/mosabua\/maven-android-sdk-deployer\">Maven Android SK Deployer<\/a> \u043f\u043e \u0442\u0435\u0433\u0443 api-19 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0435\u0433\u043e \u0441\u0431\u043e\u0440\u043a\u0443 \u0434\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0438 \u0410\u043d\u0434\u0440\u043e\u0438\u0434 4.2 (\u043d\u0430 4.4 \u044f \u0435\u0449\u0451 \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b). \u041f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u0432\u044b\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0444\u043e\u0440\u043a \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0430? \u0412 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0435\u0433, \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u044e\u0431\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0432\u043d\u0435\u0441\u0451\u043d\u043d\u044b\u0435 \u0432 \u043a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043c\u043e\u0433\u0443\u0442 \u0441\u043b\u043e\u043c\u0430\u0442\u044c \u043d\u0430\u043c \u0441\u0431\u043e\u0440\u043a\u0443.<\/p>\n<h5>\u0417\u0430\u043f\u0443\u0441\u043a \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430<\/h5>\n<p>  <\/p>\n<pre><code class=\"bash\">#!\/bin\/bash  # Scripts starts Android emulator with name 'Default'  echo no | android create avd --force -n Default -t android-17 --abi armeabi-v7a emulator -avd Default -no-skin -no-audio -no-window & <\/code><\/pre>\n<p>  \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435: \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441 \u0438\u043c\u0435\u043d\u0435\u043c Default \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0435\u0433\u043e \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435. <\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 Travis \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 install \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043f\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0430\u0437\u0430 before_script, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u0434\u043e\u0436\u0438\u0434\u0430\u0435\u043c\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430.<\/p>\n<h5>\u0421\u0431\u043e\u0440\u043a\u0430<\/h5>\n<p>  \u0424\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u043a\u043a\u043e\u0440\u0434 \u2014 \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0431\u043e\u0440\u043a\u0438. \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0437\u043e\u0432 mvn install \u0441 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u043c with-tests, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b.  <\/p>\n<pre><code class=\"bash\">script: mvn install -Pwith-tests <\/code><\/pre>\n<h4>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h4>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u043f\u0440\u043e\u0435\u043a\u0442 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d, \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043c\u043c\u0438\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u0441\u0431\u043e\u0440\u043a\u0438 \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u043f\u043e\u0447\u0442\u0443. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 <a href=\"https:\/\/github.com\/serso\/android-common\">Android Common Library<\/a> \u0441 \u0440\u0430\u0431\u043e\u0447\u0438\u043c\u0438 \u0441\u0431\u043e\u0440\u043a\u0430\u043c\u0438 \u0432 <a href=\"https:\/\/travis-ci.org\/serso\/android-common\/builds\">Travis CI<\/a>.<br \/>  \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0438\u043b\u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u2014 \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438. \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435.    \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/200646\/\"> http:\/\/habrahabr.ru\/post\/200646\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c Android \u043f\u0440\u043e\u0435\u043a\u0442\u044b (Maven) \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u043d\u0430 Travis CI.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-200646","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/200646","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=200646"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/200646\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=200646"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=200646"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=200646"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}