14

スタンフォード自然言語処理ツールキットのコア コンポーネントには、ファイルにJava コードがありstanford-corenlp-1.3.4.jar、別のファイルに (非常に大きな) モデル ファイルがありstanford-corenlp-1.3.4-models.jarます。<classifier>models</classifier>Maven はモデル ファイルを自動的にダウンロードしませんが、.pom に行を追加した場合にのみダウンロードします。コードとモデルの両方をフェッチする .pom スニペットを次に示します。

    <dependency>
        <groupId>edu.stanford.nlp</groupId>
        <artifactId>stanford-corenlp</artifactId>
        <version>1.3.4</version>
        <classifier>models</classifier>
    </dependency>

コマンドラインから同じことを行う方法を見つけようとしています。Mavendependency:getプラグイン タスクがこれを行う方法のようです。次のコマンドラインは正しいようです

mvn dependency:get \
    -DgroupId=edu.stanford.nlp \
    -DartifactId=stanford-corenlp \
    -Dversion=LATEST \
    -Dclassifier=models \
    -DrepoUrl=repo1.maven.org

ただし、コードの Jar ファイルのみがダウンロードされ、モデルの Jar ファイルはダウンロードされません。

これが事実である理由は何ですか?classifierこれが単にスタンフォード NLP パッケージの問題なのか、それとも のオプションに関するより一般的な問題なのかはわかりませんdependency:get

4

1 に答える 1

5

まず、ご質問ありがとうございます。データとライブラリの両方を含める方法についての私の質問に答えました。私がMavenでやっていることを共有しますが、これがあなたの質問を満たすかどうかはわかりません:

<dependency>
  <groupId>edu.stanford.nlp</groupId>
  <artifactId>stanford-corenlp</artifactId>
  <version>1.3.4</version>
  <classifier>models</classifier>
</dependency>
<dependency>
      <groupId>edu.stanford.nlp</groupId>
      <artifactId>stanford-corenlp</artifactId>
      <version>1.3.4</version>
    </dependency>
    <dependency>
      <groupId>edu.stanford.nlp</groupId>
      <artifactId>stanford-parser</artifactId>
      <version>2.0.4</version>
    </dependency>

また、使用するライブラリが jar に含まれていることを確認してください。

  <build>
  <plugins>
    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <configuration>
        <archive>
          <manifest>
            <mainClass>org.example.nlpservice.NLP</mainClass>
          </manifest>
        </archive>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
      </configuration>
      <executions>
        <execution>
          <id>make-assembly</id> <!-- this is used for inheritance merges -->
          <phase>package</phase> <!-- bind to the packaging phase -->
          <goals>
            <goal>single</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
   </build>

最後に、あなたは試しましたmvn deployか、それともmvn installまだですか?ローカルの mvn キャッシュ/レポから /lib ディレクトリにコピーできます。

于 2013-03-21T17:17:05.253 に答える