Stanford Natural Language Processing Toolkit的核心组件在stanford-corenlp-1.3.4.jar
文件中包含Java代码,并且在单独的stanford-corenlp-1.3.4-models.jar
文件中包含(非常大)模型文件。 Maven不会自动下载模型文件,但仅当您向.pom添加<classifier>models</classifier>
行时。这是一个.pom片段,可以获取代码和模型。
<dependency>
<groupId>edu.stanford.nlp</groupId>
<artifactId>stanford-corenlp</artifactId>
<version>1.3.4</version>
<classifier>models</classifier>
</dependency>
我正试图弄清楚如何从命令行执行相同的操作。似乎Maven dependency:get
插件任务就是这样做的方法。以下命令行似乎是正确的
mvn dependency:get \
-DgroupId=edu.stanford.nlp \
-DartifactId=stanford-corenlp \
-Dversion=LATEST \
-Dclassifier=models \
-DrepoUrl=repo1.maven.org
但是,它只下载代码Jar文件,而不是模型Jar文件。
知道为什么会这样吗?我不确定这只是斯坦福NLP软件包的问题,还是classifier
选项dependency:get
的更常见问题。
答案 0 :(得分: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>
另外,请确保我的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 cache / repo复制到/ lib目录。