我尝试使用scp将maven创建的耳朵上传到应用服务器.
当我试图跑
mvn wagon:upload-single
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
[ERROR] Failed to execute goal org.codehaus.mojo:wagon-maven-plugin:1.0-beta-3:upload-single (default-cli) on project de.volkswagen.dps.ear: Unable to create a Wagon instance for null: url can not be null -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:wagon-maven-plugin:1.0-beta-3:upload-single (default-cli) on project de.volkswagen.dps.ear: Unable to create a Wagon instance for null
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:585)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:324)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:247)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:104)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:427)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:157)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:121)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) … 我有一个闭源项目,我想用Maven构建.它依赖于两个java库,这些库在我能够找到的任何公共存储库中都不可用(在本例中为libGoogleAnalytics.jar和FlurryAgent.jar,但该问题适用于任何闭源依赖项).
我希望组织中的任何人能够使用我用来构建应用程序的完全相同版本的依赖项来构建应用程序.这包括我的同事和我们的构建服务器.
如何管理maven不知道如何解决的闭源依赖?
显然,我可以去每个人的机器并手动执行"mvn install:install-file"以将二进制文件放入他们的maven存储库,但是手动管理依赖关系会破坏依赖关系管理器的目的.
根据maven的内部存储库文档,我可以在某处设置存储库服务器并将二进制文件放在那里,然后所有开发人员都可以访问它们.但这意味着我需要维护一台新服务器(或至少在现有服务器上建立一个新网站).这也意味着我必须担心权限,以确保外部各方无法访问存储库.这也意味着我现在必须担心备份和可用性,这样如果存储库不可用,开发人员就不会遇到打嗝.
如果我可以以某种方式使用我们现有的scm(在这种情况下为hg,但可能是git或svn或其他)来存储依赖项,那么所有这些问题都会消失.我们的源代码控制存储库已经备份,它基本上始终可供开发人员使用构建版本,并且已经处理了它的权限.
但是我还没有弄清楚如何使用hg来管理maven依赖关系,如果这是可能的话.
如何使用自己的旅行车将第三方软件包部署到我的远程存储库?
例如,我可以使用以下命令部署第三方软件包而无需更改pom.xml.
mvn deploy -DaltDeploymentRepository=thirdparty::default::http://myremoserver.com/mavenrepository/thirdparty -f thirpartpomfile -Dmaven.install.skip=true -Dmaven.test.skip=true
Run Code Online (Sandbox Code Playgroud)
我怎么能告诉maven使用特定的旅行车来部署包?我可以传递一些命令行参数或向settings.xml添加一些条目吗?
我如何为gradle做同样的事情?
HTTP请求的默认Maven设置(例如Maven用于从存储库获取工件的设置)包括以下标头:
Cache-control: no-cache
Cache-store: no-store
Pragma: no-cache
Expires: 0
Accept-Encoding: gzip
Run Code Online (Sandbox Code Playgroud)
这似乎是记录在案的行为.HTTP的默认Maven旅行车(即"轻量级"客户端)似乎不允许禁用这些标头.
为什么Maven默认以这种方式配置?对于实际拥有版本的工件,它们永远不会改变,对吧?
我在许多开发人员共享一个公共HTTP代理的环境中工作,这种行为意味着开发人员永远不会从缓存中受益.并且,我们拥有dependencyManagement所有依赖项,并且不使用SNAPSHOT或其他可能更改的版本,因此缓存似乎应该是安全的.
我可以在settings.xml或pom.xml中放置什么来禁用这些标头并允许我们的代理缓存响应并返回它们?
我正在研究Maven Wagon插件以尝试将一些工件上传到远程UNC服务器共享(\\servername\share\directory\to\put\to),并且我已将其配置为在POM中如此工作:
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-file</artifactId>
<version>1.0-beta-7</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0-beta-3</version>
<executions>
<execution>
<id>upload-jar-to-folder</id>
<phase>deploy</phase>
<goals>
<goal>upload</goal>
</goals>
</execution>
</executions>
<configuration>
<fromDir>${project.build.directory}</fromDir>
<includes>*</includes>
<url>file://localhost///${servername}/${sharename}</url>
<toDir>directory/to/put/artifact</toDir>
</configuration>
</plugin>
...
</build>
Run Code Online (Sandbox Code Playgroud)
当我传入时,这适用于一台服务器-Dservername=x -Dsharename=y,但是如何将其扩展,以便我可以为QA或Prod运行部署,我需要部署多台服务器?
我已经考虑(并编写)了一个mvn wagon:upload -Penvironment#多次运行的脚本- 每个服务器一次 - 但这对我来说似乎有瑕疵.如果我正在炮轰一个脚本来处理这个过程,我也可以编写整个部署的脚本.然而,这剥夺了Wagon(和Maven)的实用性......
有没有办法<executions>为一个目标运行多个?例如,wagon:upload在我刚运行时运行多个配置文件配置的任务mvn deploy -Pqa?
当使用私有AWS S3 存储桶作为 Maven 存储库时,有很多可用的 s3 wagon 提供程序可以很好地使用 s3://[bucket]/folder 协议部署和拉取依赖项。
但是,当您尝试使用父 POM 引用执行此操作时,即
<parent>
<groupId>com.my.company</groupId>
<artifactId>my-parent-pom</artifactId>
<version>1.0.0</version>
</parent>
Run Code Online (Sandbox Code Playgroud)
仅存在于私有S3 Maven 存储库中,似乎 Maven 仅检查基于 HTTP 的定义存储库,而不会尝试查看 S3 存储库。
本项目中的 S3 wagon 定义为
<build>
<extensions>
<extension>
<groupId>org.springframework.build</groupId>
<artifactId>aws-maven</artifactId>
<version>5.0.0.RELEASE</version>
</extension>
</extensions>
</build>
Run Code Online (Sandbox Code Playgroud)
这同样适用于普通依赖项,但不适用于父 POM 引用
寻找某种方法在 S3 Maven 存储库中正确解析父 POM
这是wagon-ssh 2.10的错误吗?
有什么用?
例如,Maven,Wagon-SSH和pom设置的组合将获得与Maven 3.0.5和wagon-ssh 2.4相同的行为?
在我的pom.xml中升级到wagon-ssh 2.10之后,根据https://issues.apache.org/jira/browse/MDEPLOY-177检查这是否能解决我的问题, 另请参阅如何修复或解决旅行车错误?
我收到以下错误消息:
No connector available to access repository XXX-snapshot-repository
(scp://XXX/srv/repo/snapshots/) of type default
using the available factories WagonRepositoryConnectorFactory
Run Code Online (Sandbox Code Playgroud)
展望没有可用的连接器使用eclipse以太网包通过Maven插件部署
我假设它可能是一个maven版本的问题.事实上,我已经坚持了一个较旧的3.0.5 maven一段时间,因为wagon-ssh已被打破了几个月的scp转移
mvn --version
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 14:51:28+0100)
Run Code Online (Sandbox Code Playgroud)
所以我升级到Maven 3.3.3
mvn --version
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T13:57:37+02:00)
Run Code Online (Sandbox Code Playgroud)
稍微修改错误消息:
Cannot access scp://XXX/srv/repo/snapshots/ with type default using the available connector factories: BasicRepositoryConnectorFactory
Run Code Online (Sandbox Code Playgroud)
似乎有不同类型的ConnectorFactories
查看/sf/answers/1277772821/, 有一个指向http://maven.apache.org/guides/mini/guide-using-extensions.html的指针,它应该解释如何添加连接器(6人赞成这个答案) - 但我没有在那里找到ConnectorFactory. …
简介:如何使用Maven将一些生成的文件复制到Web服务器(例如IIS或Apache)目录中?
细节:我有一个在Maven中构建的工作应用程序.我已经设法使用webstart-maven-plugin构建它,它在目录中生成所有需要的文件(.jar和.jnlp)target/jnlp.它还会创建一个zip文件target/foo-1.0.zip.
目前webstart插件没有deploy目标 - 对它的请求最终在FAQ(问题3)上.它可能会在将来实施,但目前的建议是使用wagon-maven-plugin.
我从未使用过Wagon.首先,我想将文件复制到由Web服务器提供的本地目录中.后来我想远程复制它们,可能使用ftp.有人可以举例说明我需要添加的内容pom.xml以使本地副本正常工作(希望也是一个ftp示例吗?).我在文档中找不到它.从阅读我想我可能也需要Wagon Maven文件提供程序,但因为这似乎几乎没有文档,我不确定.
我正在尝试将资源复制到另一个位置.我正在使用maven wagon-ssh插件来执行此操作.它在本地工作正常,我在使用Hudson/Jenkins时遇到问题.
我的settings.xml文件看起来像这样:
<servers>
<server>
<id>iq</id>
<configuration>
<knownHostsProvider implementation="org.apache.maven.wagon.providers.ssh.knownhost.NullKnownHostProvider">
<hostKeyChecking>no</hostKeyChecking>
</knownHostsProvider>
</configuration>
<username>user</username>
<password>pass</password>
</server>
</servers>
Run Code Online (Sandbox Code Playgroud)
我尝试了这个答案来跳过检查,因为我得到了:
Are you sure you want to continue connecting? (yes/no): The authenticity of host 'address' can't be established.
RSA key fingerprint is 10:.......:bb.
Run Code Online (Sandbox Code Playgroud)
但现在我得到了:
Could not apply configuration for iq to wagon org.apache.maven.wagon.providers.ssh.jsch.ScpWagon:ClassNotFoundException: Class name which was explicitly given in configuration using 'implementation' attribute: 'org.apache.maven.wagon.providers.ssh.knownhost.NullKnownHostProvider' cannot be loaded
org.codehaus.plexus.component.configurator.ComponentConfigurationException: ClassNotFoundException: Class name which was explicitly given in configuration using 'implementation' …Run Code Online (Sandbox Code Playgroud) 使用wagon-ssh扩展构建Maven(版本2.2.1)项目时出现以下错误
pom.xml中:
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>2.4</version>
</extension>
</extensions>
Run Code Online (Sandbox Code Playgroud)
无法初始化扩展组件描述符角色:'com.jcraft.jsch.UIKeyboardInteractive',实现:'org.apache.maven.wagon.providers.ssh.jsch.interactive.PrompterUIKeyboardInteractive',角色提示:'default'有一个提示,但还有其他实现没有
任何建议/提示非常受欢迎.