Maven:从github下载源代码,编译成jar,并将jar包含在WEB-INF / lib目录中

对于这个问题,有很多“解决方案”,但我都没有用,因此,如果这看起来多余,请原谅我。

我有一个使用Intellij IDEA构建的Java / Maven项目,该项目依赖于从以下GitHub项目构建的jar文件:https://github.com/protegeproject/snap-sparql-query

不幸的是,该jar不在任何外部存储库中,因此必须由我来构建。我的构建工作正常,并将jar手动复制到我的父项目的WEB-INF / lib文件夹中。 Intellij然后正确运行,即使生成的war文件不包含snap-sparql-query jar,也可以在执行时找到所有相关的jar。我猜它正被缓存在某个地方。

如果我从命令行($ mvn clean package生成项目,则它会生成,但是上面的jar文件仍然不包含在生成的war文件中,即使该文件存在于Windows的WEB-INF / lib文件夹中也是如此。父文件,然后打包为war文件。

理想的解决方案是父级中的Maven命令:

  1. 下载snap-sparql-query的源代码
  2. 将源代码编译成jar
  3. 将jar复制到父WEB-INF / lib目录
  4. WEB-INF / lib目录中的所有jar都包含在war文件中

至少在[em> 方面,我会手动执行上面的1-3感到满意,但是让Maven执行#4。

这是snap-sparql-query的Maven条目:

<!-- snAP SParqL API -->
<!-- https://github.com/protegeproject/snap-sparql-query -->
<dependency>
    <groupId>edu.stanford.protege</groupId>
    <artifactId>snap-sparql-query-api</artifactId>
    <version>4.0.0-snAPSHOT</version>

    <!-- this library isn't found in the maven repository,must be externally compiled -->
    <!-- and copied to the ...WEB-INF/lib directory so this pom can find it -->
    <scope>system</scope>
    <systemPath>${basedir}/WEB-INF/lib/snap-sparql-query-api-4.0.0-snAPSHOT.jar</systemPath>

    <exclusions>
        <exclusion>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>edu.stanford.protege</groupId>
    <artifactId>de-derivo-sparqldlapi</artifactId>
    <version>2.0.0</version>
    <!--<version>3.0.0</version>-->
</dependency>

我已经被警告使用systemPath是 bad ,所以,如果可能的话,我也想避免这种情况。

我可以让Maven至少执行上面的第4项,和/或最好执行1-4吗?

ether1984 回答:Maven:从github下载源代码,编译成jar,并将jar包含在WEB-INF / lib目录中

  

您问了很多事情,为了回答所有问题,我需要更多   细节。您提供这些详细信息后,我将更新答案。但是现在,下面是列表中第4项的答案。

默认情况下,Maven在打包的应用程序中不包含系统范围的jar。为了包括系统范围的依赖关系,您需要使用maven-dependency-plugin的复制依赖关系目标。

请注意<phase>prepare-package</phase>。具有阶段prepare-package对于将依赖项包含在WAR文件中非常重要,因为此目标需要在执行maven-war-plugin之前执行。

<build>
        <finalName>maven-sys-scope</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dep</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <includeScope>system</includeScope>
                            <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/lib</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
本文链接:https://www.f2er.com/3156562.html

大家都在问