并行运行SVN更新和Ant构建

时间:2019-02-01 09:25:04

标签: bash svn parallel-processing ant

我有一堆要使用ant更新和构建的svn项目。目前我有一个顺序方法:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.android.vending.BILLING" />

<application
    android:allowBackup="true"
    android:icon="@drawable/logo"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/Theme.AppCompat.DayNight.NoActionBar">
    <activity android:name=".acilisbir">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <meta-data
        android:name="preloaded_fonts"
        android:resource="@array/preloaded_fonts" />

    <service android:name=".MyFirebaseMessagingService">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
    <service android:name=".MyFirebaseInstanceIDService">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
        </intent-filter>
    </service>

    <activity android:name=".Ucretsiz">
        <intent-filter>
            <category android:name="android.intent.category.DEFAULT" />

            <action android:name="android.intent.action.VIEW" />

            <data android:scheme="activityucretsiz" />
        </intent-filter>
    </activity>
    <activity android:name=".AnaEkran">
        <intent-filter>
            <category android:name="android.intent.category.DEFAULT" />

            <action android:name="android.intent.action.VIEW" />

            <data android:scheme="activityanaekran" />
        </intent-filter>
    </activity>
    <activity android:name=".Login">
        <intent-filter>
            <category android:name="android.intent.category.DEFAULT" />

            <action android:name="android.intent.action.VIEW" />

            <data android:scheme="activitylogin" />
        </intent-filter>
    </activity>
    <activity android:name=".Arsiv">
        <intent-filter>
            <category android:name="android.intent.category.DEFAULT" />

            <action android:name="android.intent.action.VIEW" />

            <data android:scheme="activityarsiv" />
        </intent-filter>
    </activity>
    <activity android:name=".Inputlar" />
    <activity android:name=".Register" />
    <activity android:name=".Buy" />
    <activity android:name=".ucretli" />

    <!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
    <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="[ca-app-pub-3384720584226622~3587918385]" />
    <meta-data
        android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/facebook_app_id" />

    <activity
        android:name="com.facebook.FacebookActivity"
        android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:label="@string/app_name" />
    <activity
        android:name="com.facebook.CustomTabActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <data android:scheme="@string/fb_login_protocol_scheme" />
        </intent-filter>
    </activity>
    <activity android:name="com.google.android.gms.ads.AdActivity" />
    <activity
        android:name=".tabdene"
        android:label="@string/title_activity_tabdene"
        android:theme="@style/AppTheme.NoActionBar"></activity>

    <activity android:name=".testtab1" />
</application>

现在,我想并行(或在后台)运行ant构建,以便find命令可以继续进行而不会被ant调用阻塞。我已经读过有关用'&'在bash中进行分叉的信息,但无法弄清楚在我的情况下如何正确使用它。

感谢帮助!

2 个答案:

答案 0 :(得分:0)

您可以将它们置于for循环中,在后台开始每次迭代

for f in $(find /opt/src/ -path "*/trunk/build.xml") do
...
...
done &

答案 1 :(得分:0)

经过一段时间的摸索,我得到了以下解决方案:

for f in $(find /opt/src/ -path "*/trunk/build.xml"); do 
svn update $(dirname $f); 
konsole --noclose --nofork -e ``ant -f $f`` &; 
done

svn更新是串行运行的,而ant是并行构建的。这意味着,一旦某个目录的svn更新完成,将在单独的控制台(此处为kde的终端应用)窗口中启动ant构建。 并行开始许多svn更新会导致我的环境中出现网络错误,因此我如上所述更改了行为。