Java Maven:使用依赖项将本地项目部署到远程服务器
我知道这听起来很粗鲁,我为此道歉 我的问题很简单:Java Maven:使用依赖项将本地项目部署到远程服务器,java,maven,java-8,compilation,Java,Maven,Java 8,Compilation,我知道这听起来很粗鲁,我为此道歉 我的问题很简单:我在本地开发了一个项目,它包含许多在pom.xml文件中引用的外部依赖项。 当我使用mvndeploy在远程服务器上部署时,只部署应用程序jar,而不部署其依赖项因此,当我尝试在远程服务器上执行我的程序时,结果是java.lang.NoClassDefFoundError 我需要做什么才能使这项工作正常进行 编辑:我宁愿避免最后得到一个巨大的相扑罐,里面有所有的相扑依赖物。我更愿意将依赖项单独导出到远程服务器(如果有意义的话) 编辑2:有没有办法
我在本地开发了一个项目,它包含许多在pom.xml文件中引用的外部依赖项。 当我使用mvndeploy在远程服务器上部署时,只部署应用程序jar,而不部署其依赖项
因此,当我尝试在远程服务器上执行我的程序时,结果是java.lang.NoClassDefFoundError 我需要做什么才能使这项工作正常进行 编辑:我宁愿避免最后得到一个巨大的相扑罐,里面有所有的相扑依赖物。我更愿意将依赖项单独导出到远程服务器(如果有意义的话) 编辑2:有没有办法“Mavenize”远程服务器并直接从那里执行Maven依赖项查找?并且只在我更新代码时部署我的“真实”jar 我将看一看带有依赖项的:copydependencies mojo。看起来很有趣 下面是我的pom.xml:jar和依赖项不起作用(我一定错过了什么)
4.0.0
通用域名格式
兹隆
HBaseConnect
BaseConnect
(...)
ssh存储库
scpexe://remote.server/cloud/repo
org.apache.maven.plugins
maven jar插件
zylon.mymain类
maven汇编插件
3.1.1
带有依赖项的jar
org.apache.maven.wagen
货车ssh外部
1.0-beta-6
下面的shade插件虽然有效,但它会产生一个巨大的Jar文件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<excludes>
<exclude>classworlds:classworlds</exclude>
<exclude>junit:junit</exclude>
<exclude>jmock:*</exclude>
<exclude>*:xml-apis</exclude>
<exclude>org.apache.maven:lib:tests</exclude>
</excludes>
</artifactSet>
</configuration>
</execution>
</executions>
</plugin>
org.apache.maven.plugins
maven阴影插件
3.2.1
包裹
阴凉处
类世界:类世界
junit:junit
jmock:*
*:xml api
maven:lib:tests
您可以使用maven汇编插件
并将其配置为使用带有依赖项的jar
描述符来实现这一点
你可以找到这个例子和更多细节
编辑:确保为插件定义执行目标并正确调用该目标;通过以下方式之一:
mvn组ID:artifactId:version:goal
(您可以检查如何缩短此引用)包
)。在您的特殊情况下:
[...]
[...]
)是否要将所有依赖项jar打包到输出jar中?如果是的话,你可以看看maven-assembly-plugin。或者在@Macrono1234上,maven共享插件很方便,但最终生成了一个巨大的jar,这不是很方便。不幸的是,这没有起作用。我可能遗漏了什么。用pom.xml编辑我的帖子
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<excludes>
<exclude>classworlds:classworlds</exclude>
<exclude>junit:junit</exclude>
<exclude>jmock:*</exclude>
<exclude>*:xml-apis</exclude>
<exclude>org.apache.maven:lib:tests</exclude>
</excludes>
</artifactSet>
</configuration>
</execution>
</executions>
</plugin>
<project>
[...]
<build>
[...]
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<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>
[...]
</project>