Maven依赖:get不下载Stanford NLP模型文件

W.P*_*ill 14 models stanford-nlp maven

斯坦福自然语言处理工具包的核心组件在stanford-corenlp-1.3.4.jar文件中包含Java代码,并且在单独的stanford-corenlp-1.3.4-models.jar文件中具有(非常大的)模型文件.Maven不会自动下载模型文件,但仅限<classifier>models</classifier>于向.pom 添加行.这是一个.pom片段,可以获取代码和模型.

    <dependency>
        <groupId>edu.stanford.nlp</groupId>
        <artifactId>stanford-corenlp</artifactId>
        <version>1.3.4</version>
        <classifier>models</classifier>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

我试图弄清楚如何从命令行做同样的事情.看起来Maven dependency:get插件任务就是这样做的方法.以下命令行似乎是正确的

mvn dependency:get \
    -DgroupId=edu.stanford.nlp \
    -DartifactId=stanford-corenlp \
    -Dversion=LATEST \
    -Dclassifier=models \
    -DrepoUrl=repo1.maven.org
Run Code Online (Sandbox Code Playgroud)

但是,它只下载代码Jar文件而不是模型Jar文件.

知道为什么会这样吗?我不确定这只是斯坦福NLP包的一个问题,还是一个更普遍的classifier选择问题dependency:get.

Jon*_*ler 5

首先要感谢你的问题.它回答了我关于如何包含数据和lib的问题.我将与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>
Run Code Online (Sandbox Code Playgroud)

另外,确保我的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>
Run Code Online (Sandbox Code Playgroud)

最后,你试过mvn deploy还是mvn install吗?您可以从本地mvn cache/repo复制到/ lib目录.