2017-05-23 12 views
1

maven-version-pluginを使用して、すべての依存関係を自動的に更新しようとしています。それにもかかわらず、私はアルファ版またはベータ版を望んでいません。 したがって、これらのバージョンを除外するためのルールファイルを作成しました。ここでは、次のとおりです。Maven-version-plugin、ruleset、rule&ignoreVersionsタグ

<ruleset comparisonMethod="maven" 
    xmlns="http://mojo.codehaus.org/versions-maven-plugin/rule/2.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://mojo.codehaus.org/versions-maven-plugin/rule/2.0.0 http://mojo.codehaus.org/versions-maven-plugin/xsd/rule-2.0.0.xsd"> 

    <rule groupId="commons-logging" artifactId="commons-logging"> 

     <ignoreVersions> 
      <ignoreVersion type="regex">.*[-_\.](alpha|Alpha|ALPHA|b|beta|Beta|BETA|rc|‌​RC|M|EA)[-_\.]?[0-9]*</ignoreVersion> 
     </ignoreVersions> 

    </rule> 

</ruleset> 

(この正規表現はthis threadから来ています。)

問題はのIntelliJ IDEAはのxmlns URIと第二XSIを作ることです:schemaLocationのURIの赤、「URIがに登録されていないと言って"最初のものと" "http://mojo.codehaus.org/versions-maven-plugin/xsd/rule-2.0.0.xsd '"のシンボルを解決できません。 The documentationは同じ値を使用しているので、それらは商品であると仮定します。

このURIを登録して解決できないシンボルを修正するにはどうすればよいですか?

ありがとうございます!

+0

登録されていないURIを修正するには、Alt + Enterを実行する必要がありますか? – CrazyCoder

+0

お返事ありがとうございます! Alt + Enterで4つのアクションがありますが、いずれも未登録のURIを修正することに成功しませんでした。 – Abrikot

+0

同じ問題が発生しています。問題は、実際に提案されている場所http:// mojo.codehaus.org/versions-maven-plugin/xsd/rule-2.0.0.xsdがHTTP/1.1 404を指定しているようです。 Intellij IDEAは指定されたURLにあるスキーマを使用して名前空間を解決しますが、404のためにそれを見つけることはできません。 スキーマを手動で検索しようとしています(検索エンジンを使用しています)が見つかりません。 – mhogerheijde

答えて

1

私は実際のスキーマはここhttp://mojo.codehaus.org/versions-maven-plugin/xsd/rule-2.0.0.xsdに位置ではなく、されていることを発見しました:http://www.mojohaus.org/versions-maven-plugin/xsd/rule-2.0.0.xsd

ドキュメント(http://www.mojohaus.org/versions-maven-plugin/version-rules.html)は、実際に間違ったサンプルファイルが得られますが、以下の

ルールを述べるん-setファイルはXSD schemaと一致する必要があります。

これはxsi:schemaLocationがいっぱいで

xsi:schemaLocation="http://mojo.codehaus.org/versions-maven-plugin/rule/2.0.0 http://www.mojohaus.org/versions-maven-plugin/xsd/rule-2.0.0.xsd" 

に変更する必要があることを意味し、それはこのようになります。あなたが<Alt>+<Enter>を使用して、外部リソースを取得する」を選択することができxsi:schemaLocationを変更した後

<ruleset 
    comparisonMethod="maven" 
    xmlns="http://mojo.codehaus.org/versions-maven-plugin/rule/2.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://mojo.codehaus.org/versions-maven-plugin/rule/2.0.0 http://www.mojohaus.org/versions-maven-plugin/xsd/rule-2.0.0.xsd"> 

    <rule groupId="commons-logging" artifactId="commons-logging"> 
    <ignoreVersions> 
     <ignoreVersion type="regex">.*[-_\.](alpha|Alpha|ALPHA|b|beta|Beta|BETA|rc|‌​RC|M|EA)[-_\.]?[0-9]*</ignoreVersion> 
    </ignoreVersions> 
    </rule> 
</ruleset> 

スキーマを解決して正しい名前空間をインポートします。また


はまた、あなたは、スキーマが配置されていると思いますのIntelliJ IDEAを伝えることができます。たとえば、ファイルをディスクにダウンロードすることができます。 <Alt>+<Enter>を押して、「手動で外部リソースを設定する」を選択し、今ダウンロードしたファイルを指してください。 IntelliJ IDEA は、xsi:schemaLocationのヒントを無視し、今設定したオーバーライドを使用するようになりました。

リモートファイルを指すxsi:schemaLocationを使用することの欠点は、xml-processorが毎回オンザフライでダウンロードする必要があることです(パフォーマンスヒットです、特にスキーマ自体も外部スキーマの)。第2に、ではないので http sであるため、ファイルが転送中に変更されていないことを信頼する必要があります。事前にダウンロードすることで、ファイルを検査し、信頼できる場所に置き、と知られているバージョンを使用することができます。