- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
背景:我们处于基于代理的环境中。我们的安全团队将 Maven Central 列入白名单需要时间。因此,我们手动将项目的依赖项下载到 Jenkins 代理的 ~.m2/repository
文件夹中,以开始构建自动化之旅。
Nexus 是我们的 Artifact 发布平台。
问题是 Maven 没有引用存储在 m2 文件夹中的依赖项。它总是尝试连接互联网来下载 deps。
这是我们的 pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<!--
| This is the configuration file for Maven. It can be specified at two levels:
|
| 1. User Level. This settings.xml file provides configuration for a single user,
| and is normally provided in ${user.home}/.m2/settings.xml.
|
| NOTE: This location can be overridden with the CLI option:
|
| -s /path/to/user/settings.xml
|
| 2. Global Level. This settings.xml file provides configuration for all Maven
| users on a machine (assuming they're all using the same Maven
| installation). It's normally provided in
| ${maven.conf}/settings.xml.
|
| NOTE: This location can be overridden with the CLI option:
|
| -gs /path/to/global/settings.xml
|
| The sections in this sample file are intended to give you a running start at
| getting the most out of your Maven installation. Where appropriate, the default
| values (values used when the setting is not specified) are provided.
|
|-->
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>C:\Users\Netadmin\.m2\repository</localRepository>
<!-- interactiveMode
| This will determine whether maven prompts you when it needs input. If set to false,
| maven will use a sensible default value, perhaps based on some other setting, for
| the parameter in question.
|
| Default: true
<interactiveMode>true</interactiveMode>
-->
<!-- offline
| Determines whether maven should attempt to connect to the network when executing a build.
| This will have an effect on artifact downloads, artifact deployment, and others.
|
| Default: false
<offline>false</offline>
-->
<!-- pluginGroups
| This is a list of additional group identifiers that will be searched when resolving plugins by their prefix, i.e.
| when invoking a command line like "mvn prefix:goal". Maven will automatically add the group identifiers
| "org.apache.maven.plugins" and "org.codehaus.mojo" if these are not already contained in the list.
|-->
<pluginGroups>
<!-- pluginGroup
| Specifies a further group identifier to use for plugin lookup.
<pluginGroup>com.your.plugins</pluginGroup>
-->
</pluginGroups>
<!-- proxies
| This is a list of proxies which can be used on this machine to connect to the network.
| Unless otherwise specified (by system property or command-line switch), the first proxy
| specification in this list marked as active will be used.
|-->
<proxies>
<proxy>
<id>nexus-abcd</id>
<active>true</active>
<protocol>http</protocol>
<username>abcd</username>
<password>abcd@1213</password>
<host>proxylb.abcd.com</host>
<port>80</port>
</proxy>
</proxies>
<!-- servers
| This is a list of authentication profiles, keyed by the server-id used within the system.
| Authentication profiles can be used whenever maven must make a connection to a remote server.
|-->
<servers>
<!-- server
| Specifies the authentication information to use when connecting to a particular server, identified by
| a unique name within the system (referred to by the 'id' attribute below).
|
| NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are
| used together.
|
<server>
<id>deploymentRepo</id>
<username>repouser</username>
<password>repopwd</password>
</server>
-->
<server>
<id>sdg-snapshots</id>
<username>admin</username>
<password>admin@123</password>
</server>
<server>
<id>sdg-releases</id>
<username>admin</username>
<password>admin@123</password>
</server>
<!-- Another sample, using keys to authenticate.
<server>
<id>siteServer</id>
<privateKey>/path/to/private/key</privateKey>
<passphrase>optional; leave empty if not used.</passphrase>
</server>
-->
</servers>
<!-- mirrors
| This is a list of mirrors to be used in downloading artifacts from remote repositories.
|
| It works like this: a POM may declare a repository to use in resolving certain artifacts.
| However, this repository may have problems with heavy traffic at times, so people have mirrored
| it to several places.
|
| That repository definition will have a unique id, so we can create a mirror reference for that
| repository, to be used as an alternate download site. The mirror site will be the preferred
| server for that repository.
|-->
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
<mirror>
<id>sdg-group</id>
<name>sdg-group</name>
<url>http://xx.xx.xx.xxx:9043/repository/sdg-group/</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
<!-- profiles
| This is a list of profiles which can be activated in a variety of ways, and which can modify
| the build process. Profiles provided in the settings.xml are intended to provide local machine-
| specific paths and repository locations which allow the build to work in the local environment.
|
| For example, if you have an integration testing plugin - like cactus - that needs to know where
| your Tomcat instance is installed, you can provide a variable here such that the variable is
| dereferenced during the build process to configure the cactus plugin.
|
| As noted above, profiles can be activated in a variety of ways. One way - the activeProfiles
| section of this document (settings.xml) - will be discussed later. Another way essentially
| relies on the detection of a system property, either matching a particular value for the property,
| or merely testing its existence. Profiles can also be activated by JDK version prefix, where a
| value of '1.4' might activate a profile when the build is executed on a JDK version of '1.4.2_07'.
| Finally, the list of active profiles can be specified directly from the command line.
|
| NOTE: For profiles defined in the settings.xml, you are restricted to specifying only artifact
| repositories, plugin repositories, and free-form properties to be used as configuration
| variables for plugins in the POM.
|
|-->
<profiles>
<!-- profile
| Specifies a set of introductions to the build process, to be activated using one or more of the
| mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/>
| or the command line, profiles have to have an ID that is unique.
|
| An encouraged best practice for profile identification is to use a consistent naming convention
| for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc.
| This will make it more intuitive to understand what the set of introduced profiles is attempting
| to accomplish, particularly when you only have a list of profile id's for debug.
|
| This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo.
<profile>
<id>jdk-1.4</id>
<activation>
<jdk>1.4</jdk>
</activation>
<repositories>
<repository>
<id>jdk14</id>
<name>Repository for JDK 1.4 builds</name>
<url>http://www.myhost.com/maven/jdk14</url>
<layout>default</layout>
<snapshotPolicy>always</snapshotPolicy>
</repository>
</repositories>
</profile>
-->
<profile>
<id>sdg</id>
<repositories>
<repository>
<id>releases</id>
<name>SDGReleaseRepository</name>
<url>http://xx.xx.xx.xxx:9043/repository/sdg-releases/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</profile>
<!--
| Here is another profile, activated by the system property 'target-env' with a value of 'dev',
| which provides a specific path to the Tomcat instance. To use this, your plugin configuration
| might hypothetically look like:
|
| ...
| <plugin>
| <groupId>org.myco.myplugins</groupId>
| <artifactId>myplugin</artifactId>
|
| <configuration>
| <tomcatLocation>${tomcatPath}</tomcatLocation>
| </configuration>
| </plugin>
| ...
|
| NOTE: If you just wanted to inject this configuration whenever someone set 'target-env' to
| anything, you could just leave off the <value/> inside the activation-property.
|
<profile>
<id>env-dev</id>
<activation>
<property>
<name>target-env</name>
<value>dev</value>
</property>
</activation>
<properties>
<tomcatPath>/path/to/tomcat/instance</tomcatPath>
</properties>
</profile>
-->
</profiles>
<activeProfiles>
<activeProfile>sdg</activeProfile>
</activeProfiles>
</settings>
我们还注释掉了 nexus 设置,但遇到了相同的构建时错误(无法下载依赖项)。
如何让maven引用本地仓库?
错误日志:
12:02:33 C:\Users\Netadmin\.jenkins\workspace\MART\MART_Project>D:\apache-maven-3.6.1-bin\apache-maven-3.6.1\bin\mvn -o -f parent/pom.xml clean compile install -e
12:02:35 [INFO] Error stacktraces are turned on.
12:02:35 [INFO] Scanning for projects...
12:02:35 [WARNING]
12:02:35 [WARNING] Some problems were encountered while building the effective model for com.icici:cmart-schedular:jar:1.0
12:02:35 [WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: org.apache.commons:commons-csv:jar -> duplicate declaration of version 1.0 @ line 120, column 15
12:02:35 [WARNING]
12:02:35 [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
12:02:35 [WARNING]
12:02:35 [WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
12:02:35 [WARNING]
12:02:35 [INFO] ------------------------------------------------------------------------
12:02:35 [INFO] Reactor Build Order:
12:02:35 [INFO]
12:02:35 [INFO] parent [pom]
12:02:35 [INFO] mart-framework [jar]
12:02:35 [INFO] mart-domain [jar]
12:02:35 [INFO] mart-transfer-object [jar]
12:02:35 [INFO] mart-fi-integration [jar]
12:02:35 [INFO] mart-web [war]
12:02:35 [INFO] mart-report [war]
12:02:35 [INFO] mart-schedular [jar]
12:02:35 [INFO] mart-web-scheduler [war]
12:02:35 [INFO]
12:02:35 [INFO] --------------------------< com.icici:parent >--------------------------
12:02:35 [INFO] Building parent 1.0 [1/9]
12:02:35 [INFO] --------------------------------[ pom ]---------------------------------
12:02:35 [INFO]
12:02:35 [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ parent ---
12:02:35 [INFO] ------------------------------------------------------------------------
12:02:35 [INFO] Reactor Summary:
12:02:35 [INFO]
12:02:35 [INFO] parent 1.0 ......................................... FAILURE [ 0.147 s]
12:02:35 [INFO] mart-framework 1.0 ................................ SKIPPED
12:02:35 [INFO] mart-domain 1.0 ................................... SKIPPED
12:02:35 [INFO] mart-transfer-object 1.1 .......................... SKIPPED
12:02:35 [INFO] mart-fi-integration 1.0 ........................... SKIPPED
12:02:35 [INFO] mart-web 1.0 ...................................... SKIPPED
12:02:35 [INFO] mart-report 1.0 ................................... SKIPPED
12:02:35 [INFO] mart-schedular 1.0 ................................ SKIPPED
12:02:35 [INFO] mart-web-scheduler 1.0 ............................ SKIPPED
12:02:35 [INFO] ------------------------------------------------------------------------
12:02:35 [INFO] BUILD FAILURE
12:02:35 [INFO] ------------------------------------------------------------------------
12:02:35 [INFO] Total time: 0.399 s
12:02:35 [INFO] Finished at: 2019-07-31T12:02:35+05:30
12:02:35 [INFO] ------------------------------------------------------------------------
12:02:35 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (default-clean) on project parent: Execution default-clean of goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean failed: Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its dependencies could not be resolved: Cannot access central (https://repo.maven.apache.org/maven2) in offline mode and the artifact org.apache.maven:maven-plugin-api:jar:2.0.6 has not been downloaded from it before. -> [Help 1]
12:02:35 org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (default-clean) on project parent: Execution default-clean of goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean failed: Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its dependencies could not be resolved: Cannot access central (https://repo.maven.apache.org/maven2) in offline mode and the artifact org.apache.maven:maven-plugin-api:jar:2.0.6 has not been downloaded from it before.
POM 文件:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.abcd</groupId>
<artifactId>parent</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<scm>
<url>scm:svn:https://abcd/svn/mart-workspace/branches/mart-maven</url>
<connection>scm:svn:https://abcd/svn/repos/mart_code_workspace/branches/mart-maven</connection>
<developerConnection>scm:svn:https://abcd/svn/repos/mart_code_workspace/branches/mart-maven</developerConnection>
<tag>HEAD</tag>
</scm>
<modules>
<module>../mart-domain</module>
<module>../mart-framework</module>
<module>../mart-transfer-object</module>
<module>../mart-fi-integration</module>
<module>../mart-web</module>
<module>../mart-report</module>
<module>../mart-schedular</module>
<module>../mart-web-scheduler</module>
</modules>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
<version>1.9.2</version>
<configuration>
<connectionType>connection</connectionType>
<goals>install</goals>
</configuration>
</plugin>
</plugins>
</build>
<!-- <distributionManagement>
<snapshotRepository>
<id>sdg-snapshots</id>
<url>http://xx.xx.xx.xxx:9043/repository/sdg-snapshots/</url>
</snapshotRepository>
<repository>
<id>sdg-releases</id>
<url>http://xx.xx.xx.xxx:9043/repository/sdg-releases/</url>
</repository>
</distributionManagement>
-->
</project>
注意1:构建在 eclipse 中成功进行(引用本地存储库)。我们将桌面的 m2 repo 文件夹粘贴到服务器的 m2 文件夹中。理想情况下, Jenkins 的专家应该可以工作。
注意2:我们已通过此新更新注释掉了 Pom 和 settings.xml 文件中的 Nexus 设置。它的行为方式仍然与 Maven 尝试联系 Maven 中央仓库的方式相同。
问候
最佳答案
来自Maven CLI options ,您可以简单地强制它以离线模式运行:
mvn -o install
或 mvn --offline install
为什么它看起来很遥远?可能正如 @KrisT 所指出的,您在本地缺少一些依赖项。
或者您可以使用 -SNAPSHOT。
-U,--update-snapshots
强制检查远程存储库上的更新版本和快照。这通常由 updatePolicy 管辖。 :
updatePolicy: This element specifies how often updates should attempt to occur. Maven will compare the local POM’s timestamp (stored in a repository’s maven-metadata file) to the remote. The choices are: always, daily (default), interval:X (where X is an integer in minutes) or never.
本质上,如果使用快照,它每天都会远程查找新的快照或版本。
假设您在本地拥有所有依赖项,请使用 --offline
选项。请记住,您实际上正在使用该选项,因为它是不正常的,如果您缺少更新的依赖项,甚至是内部依赖项,您将陷入困境,特别是如果每个开发人员负责保持自己的本地更新!
另外两个想法:
mvn install
是不同的。ps:相反的问题可能会困扰其他人。一天内多次远程更新的快照不会在本地再次下拉,除非强制 -U,--update-snapshot
或 maven-dependency-plugin被调用到
dependency:purge-local-repository
tells Maven to clear dependency artifact files out of the local repository, and optionally re-resolve them.
从而强制远程获取。
<小时/>您的 build.log 显示了一个问题,尽管可能不相关:
12:02:35 [WARNING] Some problems were encountered while building the effective model for com.icici:cmart-schedular:jar:1.0
12:02:35 [WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: org.apache.commons:commons-csv:jar -> duplicate declaration of version 1.0 @ line 120, column 15
调查选项
在您的帖子更新之后,这表明您实际上本地仍然缺少一些依赖项,无论是直接的、传递的还是插件的,强制从外部进行搜索。我建议一些想法,但我不确定如果您无法更新本地存储库,您如何解决这些问题(您第一次是如何获取 jar 的?)。
Maven help提供一些配置见解:mvn help: effective-settings
:目标用于查看 Maven 实际用于运行构建的设置。这些设置是全局文件与用户文件合并的结果,其中用户文件优先。
mvn help: effective-pom
:目标用于使插值、继承和 Activity 配置文件的应用所产生的 POM 可见。它提供了一种有用的方法,可以消除对 Maven 用于构建项目的 POM 中最终内容的猜测。
Maven Dependency plugin提供一些应用程序依赖性洞察:
mvn dependency:go-offline
:解决所有项目依赖关系的目标,包括插件和报告及其依赖关系。
mvn dependency:list
和 mvn dependency:resolve-plugins
提供有关依赖项或插件的具体信息
当然,问题可能是为了执行这些,您必须在本地拥有可用的插件及其依赖项。为了有效地处理列表,您还必须具有依赖项。
您可以执行 find ~/.m2/repository -name "*.jar"-a ! -名称“*.sources.jar”-a! -name "*.javadoc.jar"
获取本地所有 jar 的列表
关于java - Maven 没有在代理环境中引用本地存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57248867/
我在文档中找不到答案,所以我在这里问。 在 Grails 中,当您创建应用程序时,您会默认获得生产、开发等环境。 如果您想为生产构建 WAR,您可以运行以下任一命令: grails war 或者 gr
我们组织的网站正在迁移到 Sitecore CMS,但我们正在努力以某种方式为开发人员 (4)、设计师 (4)、QA 人员 (3)、作者 (10-15) 和批准者 (4-10) 设置环境在他们可以独立
如何在WinCVS中设置CVSROOT环境变量? 最佳答案 简单的回答是:您不需要。 CVSROOT 环境变量被高估了。 CVS(NT) 只会在确定存储库连接字符串的所有其他方法都已用尽时才使用它。人
我最近完成了“learnyouahaskell”一书,现在我想通过构建 yesod 应用程序来应用我所学到的知识。 但是我不确定如何开始。 关于如何设置 yesod 项目似乎有两个选项。一是Stack
在这一章中,我们将讨论创建 C# 编程所需的工具。我们已经提到 C# 是 .Net 框架的一部分,且用于编写 .Net 应用程序。因此,在讨论运行 C# 程序的可用工具之前,让我们先了解一下 C#
运行Ruby 代码需要配置 Ruby 编程语言的环境。本章我们会学习到如何在各个平台上配置安装 Ruby 环境。 各个平台上安装 Ruby 环境 Linux/Unix 上的 Ruby 安装
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我有一个这样的计算(请注意,这只是非常简化的、缩减版的、最小的可重现示例!): computation <- function() # simplified version! { # a lo
我使用环境作为哈希表。键是来自常规文本文档的单词,值是单个整数(某个其他结构的索引)。 当我加载数百万个元素时,更新和查找都变慢了。下面是一些代码来显示行为。 看起来从一开始的行为在 O(n) 中比在
我正在构建一个 R 包并使用 data-raw和 data存储预定义的库 RxODE楷模。这非常有效。 然而,由此产生的.rda文件每代都在变化。某些模型包含 R 环境,并且序列化似乎包含“创建时间”
(不确定问题是否属于这里,所以道歉是为了) 我很喜欢 Sublime Text ,我经常发现 Xcode 缺少一些文本/数据处理的东西。我可能有不止一个问题—— 'Command +/' 注释代码但没
我正在使用 SF2,并且创建了一些有助于项目调试的路由: widget_debug_page: path: /debug/widget/{widgetName} defau
我创建了一个名为 MyDjangoEnv 的 conda 环境。当我尝试使用 source activate MyDjangoEnv 激活它时,出现错误: No such file or direct
有没有办法区分从本地机器运行的包和从 Cordova 应用商店安装的包? 例如,我想像这样设置一个名为“evn”的 JavaScript 变量: if(cordovaLocal){ env = 'de
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我的任务是使用 java 和 mysql 开发一个交互式网站:使用 servlet 检索和处理数据,applet 对数据客户端进行特殊处理,并处理客户端对不同数据 View 的请求。 对于使用 jav
这按预期工作: [dgorur@ted ~]$ env -i env [dgorur@ted ~]$ 这样做: [dgorur@ted ~]$ env -i which date which: no
我想进行非常快速的搜索,看来使用哈希(通过环境)是最好的方法。现在,我得到了一个在环境中运行的示例,但它没有返回我需要的内容。 这是一个例子: a system.time(benchEnv(), g
我想开始开发 OpenACC 程序,我有几个问题要问:是否可以在 AMD gpu 上执行 OpenACC 代码? 如果是这样,我正在寻找适用于 Windows 环境的编译器。我花了将近一个小时什么也没
这可能看起来很奇怪,但是有没有办法制作机器(linux/unix 风格 - 最好是 RHEL)。我需要控制机器的速度以确保代码在非常慢的系统上工作并确定正确的断点(在时间方面)。 我能做到的一种方法是
我是一名优秀的程序员,十分优秀!