2017-12-04 16 views
0

Androidプロジェクトのベースラインlintファイルを作成しようとしています。私は私のメインモジュールのbuild.gradleに設定したブロックを持っている:Android Lintベースラインで相対パスを強制する方法

lintOptions { 
    <some includes/excludes> 

    baseline file("lint-baseline.xml") 

    checkAllWarnings true 
    warningsAsErrors true 
    abortOnError false 
} 

私はその後、./gradlew lint<flavor/variant>でベースラインを作成し、糸くずに依存するように私のユニットテストのタスクを設定しています。

しかし、これにより、いくつかの絶対パスを含むベースラインファイルが生成されます。犯人は、a)サブモジュール内(ただし、すべてではないサブモジュールのみ)、またはb)ローカルのgradleキャッシュ内のいずれかと思われます。ベースラインをCIにプッシュすると、パスが正確に一致しないため、新しい警告が表示されます。

いくつかの例は次のとおりです。

<location 
     file="/Users/.../android/<submodule>/src/main/res/values/strings.xml" 
     line="4" 
     column="13"/> 

<location 
     file="/Users/.../.gradle/caches/modules-2/files-2.1/com.google.auto.value/auto-value/1.3/4961194f62915eb45e21940537d60ac53912c57d/auto-value-1.3.jar"/> 

がどのように相対パスを使用してベースラインを作成するために、糸くずを強制できますか?

答えて

0

モジュールごとに独自のbaseline.xmlを使用します。パスはモジュールのルートディレクトリからの相対パスになります。

UPDATE は一つだけbaseline.xmlプットはこの

project/app/build.gradle 
project/module1/build.gradle 
project/build.gradle 
project/lint-baseline.xml 
モジュールのbuild.gradleの使用などスニペットで

lintOptions { 
    baselineFile = rootProject.file('lint-baseline.xml') 
} 
のようなモジュール上のルートGradleのプロジェクトにそれを置く使用しよう

UPDATE 2 モジュールごとに独自のbaseline.xmlを使用します。パスはモジュールのルートディレクトリからの相対パスになります。 モジュールのbuild.gradleの使用中に、このようなスニペット

lintOptions { 
    baselineFile = project.file('lint-baseline.xml') 
    checkDependencies = false 
} 
+0

これは問題a)は解決しているようですが、問題b)は解決していないようです。私はまだgradleビルドキャッシュで発生するエラーを取得しています – karl

+0

gradleビルドキャッシュは、あなたのプロジェクトの外にあります。ビルドキャッシュ –

+0

でローカライズされた、ファイルに対してリレイティブパスを使用することはできません。この解決策は間違っています。 lintは現在のモジュールにないファイルに相対パスを入れます –

0

あなたがLintConfigabsolutePathsオプションを使用することができませんか?

関連する問題