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
    (您可以检查如何缩短此引用)
  • 将目标附加到所需的maven阶段(例如
    )。在您的特殊情况下:
  • 
    [...]
    [...]
    
    )

    是否要将所有依赖项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>