也许这将是一个比我原先想象的更大的任务,但无论如何,我正在尝试MavenProject从文件加载一个文件,然后解决它的依赖关系.我有两个位的代码,但我缺少一些我需要的对象引用; 特别是我需要得到RepositorySystemSession和的实例 RepositorySystem.有小费吗?
注意:我用maven-plugin标记了这个问题,但这不是Maven插件.我很高兴要求Maven 3(想想我已经有了......)
这是我到目前为止的代码:
构建MavenProject:
public static MavenProject loadProject(File pomFile) throws Exception
{
MavenProject ret = null;
MavenXpp3Reader mavenReader = new MavenXpp3Reader();
if (pomFile != null && pomFile.exists())
{
FileReader reader = null;
try
{
reader = new FileReader(pomFile);
Model model = mavenReader.read(reader);
model.setPomFile(pomFile);
ret = new MavenProject(model);
}
finally
{
// Close reader
}
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
解决依赖关系:
public static List<Dependency> getArtifactsDependencies(MavenProject project, String dependencyType, String …Run Code Online (Sandbox Code Playgroud) 我有以下场景:
服务器:Jetty(配置JAAS)
客户端:通过JUnit调用Jersey(通过Maven)
我在Web服务器中设置了JAAS.我使用客户端部分作为测试.
在服务器端,用户通过具有通过JAAS处理的基本身份验证的表单进行身份验证.显然,用户需要在能够查看某些页面之前进行身份验证.
我想在尝试访问安全页面之前能够通过Jersey登录.如何才能做到这一点?我已经检查过你可以定义一个过滤器,但我不太清楚如何使用它.并且 - 一旦用户通过表单登录,我该如何进行(从客户端)到我真正感兴趣的页面?
我真的很感激,如果有人能告诉我一个例子如何在泽西岛的客户端做到这一点.
我有以下JUnit测试用例方法:
@Test
public void testLogin()
throws IOException
{
String URL_LOGIN = "http://localhost:9080/foo/auth.html";
Client client = Client.create();
String username = "me";
String password = "me";
final HTTPBasicAuthFilter authFilter = new HTTPBasicAuthFilter(username, password);
client.addFilter(authFilter);
client.addFilter(new LoggingFilter());
WebResource webResource = client.resource(URL_LOGIN);
// I even tried:
// webResource.header("Authorization", "Basic " + "base64encoded_userid:password").type("application/xml");
String page = webResource.post(String.class);
System.out.println(page);
}
Run Code Online (Sandbox Code Playgroud)
请注意:
1)http:// localhost:9080/foo/auth.html是我应该在成功验证后看到的页面.
2)我实际上看到了http:// localhost:9080/foo/login.html的输出.
3)显然,通过浏览器,我可以通过login.html页面成功登录.
我似乎错过了什么?
我从今天早上做maven构建时遇到了错误.昨天和今天没有具体的变化.有人可以帮我解决这个问题吗?我尝试清除所有本地存储库,将jackson版本更改为1.9.10.令人惊讶的是,这对于正在进行相同构建的同事来说很有用.
[ERROR] Failed to execute goal on project netvogue-database-api: Could not resolve dependencies for project org.netvogue.server:netvogue-database-api:jar:1.0-SNAPSHOT: Failed to collect dependencies for [org.springframework.data:spring-data-neo4j-rest:jar:2.1.0.RC4 (compile), org.codehaus.jackson:jackson-jaxrs:jar:1.8.3 (compile), org.codehaus.jackson:jackson-mapper-asl:jar:1.8.3 (compile), org.neo4j:neo4j-kernel:jar:tests:1.8.RC1 (test), org.neo4j:neo4j-cypher:jar:1.8.RC1 (compile), com.amazonaws:aws-java-sdk:jar:1.3.10 (compile), org.imgscalr:imgscalr-lib:jar:4.2 (compile), org.springframework:spring-context:jar:3.1.2.RELEASE (compile), org.springframework.security:spring-security-config:jar:3.1.2.RELEASE (compile), org.springframework.security:spring-security-web:jar:3.1.2.RELEASE (compile), org.slf4j:slf4j-api:jar:1.5.10 (compile), org.slf4j:jcl-over-slf4j:jar:1.5.10 (runtime), org.slf4j:slf4j-log4j12:jar:1.5.10 (runtime), log4j:log4j:jar:1.2.16 (compile), junit:junit:jar:4.7 (test)]: No versions available for org.codehaus.jackson:jackson-core-asl:jar:[1.8,1.9) within specified range -> [Help 1]
Run Code Online (Sandbox Code Playgroud) 我遇到了一个奇怪的问题:
我使用" mvn deploy"(Maven 3.3.9,Jenkins 2.45,Nexus 2.12.0)在jenkins中将快照jar部署到我的nexus,结果如下(假设jar名称是userdao.jar):
Uploaded: myNexusIp/nexus/content/repositories/snapshots/xxx/1.0-SNAPSHOT/userdao-1.0-20170512.111840-6.jar
Uploaded: myNexusIp/nexus/content/repositories/snapshots/xxx/1.0-SNAPSHOT/maven-metadata.xml
Run Code Online (Sandbox Code Playgroud)
构建成功,一切都很好.
但是当我构建另一个依赖于上面的maven项目时,userdao.jar发生了如下错误:
Could not find artifact userdao:jar:1.0-20170512.111840-6 in public (http://myNexusIp/nexus/content/groups/public/)
Run Code Online (Sandbox Code Playgroud)
定位后我发现maven-metadata.xmlnexus中的时间戳比实际jar的时间戳大一秒多!
如下:
maven-metadata.xml:1.0-20170512.111840-6因为userdao-1.0-20170512.111840-6.jar在Nexus中不存在userdao-1.0-20170512.111839-6.jar,所以应该是正确的,所以它是错误的.
谁能告诉我为什么以及如何解决它?
我正在使用Apache Maven 3.0 Nexus开源版,版本:1.8.0.1
这是我的pom.xml的一部分
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.5</version>
</plugin>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.1</version>
</plugin>
<distributionManagement>
<repository>
<id>nexus</id>
<name>nexus</name>
<url>http://myrepo/nexus/content/repositories/releases</url>
</repository>
</distributionManagement>
Run Code Online (Sandbox Code Playgroud)
这是一个非常简单的项目.当我做
mvn release:prepare
mvn release:perform
Run Code Online (Sandbox Code Playgroud)
一切顺利:
...
[INFO] [INFO] --- maven-deploy-plugin:2.5:deploy (default-deploy) @ simple ---
[INFO] Uploading: http://myrepo/nexus/content/repositories/releases/...pom
[INFO] 4 KB
[INFO] 5 KB
[INFO]
[INFO] Uploaded: http://myrepo/nexus/content/repositories/releases/....pom (5 KB at 1.0 KB/sec)
[INFO] Downloading: http://myrepo/nexus/content/repositories/releases/.../maven-metadata.xml
[INFO] 603 B
[INFO]
[INFO] Downloaded: http://myrepo/nexus/content/repositories/releases/.../maven-metadata.xml (603 B at 1.5 KB/sec)
[INFO] Uploading: http://myrepo/nexus/content/repositories/releases/.../maven-metadata.xml
[INFO] 634 B
[INFO]
[INFO] Uploaded: http://myrepo/nexus/content/repositories/.../maven-metadata.xml (634 B …Run Code Online (Sandbox Code Playgroud) 抱歉蹩脚的bash问题,但我似乎无法解决.
我有以下简单的案例:
我有变数之类的 artifact-1.2.3.zip
我想在连字符和点的最后一个索引之间得到一个子串(两者都是独占的).
我的bash技能不是太强.我有以下内容:
a="artifact-1.2.3.zip"; b="-"; echo ${a:$(( $(expr index "$a" "$b" + 1) - $(expr length "$b") ))}
Run Code Online (Sandbox Code Playgroud)
生产:
1.2.3.zip
Run Code Online (Sandbox Code Playgroud)
如何删除该.zip部件?
我是一个Lucene新手,我正在尝试使用Luke打开一个Lucene 4.3索引(我使用我的简单Lucene 4.3.1应用程序创建),但它一直在给我:
该位置的目录无效,请检查控制台以获取更多信息.最后一个异常:java.lang.IllegalArgumentException:名称为"Lucene42"的类型为org.apache.lucene.codecs.Codec的SPI类不存在.您需要将支持此SPI的相应JAR文件添加到类路径中.当前类路径支持以下名称:[Lucene40,Lucene3x,SimpleText,Appending]
精细.所以我将代码中使用的Lucene版本设置为Version.LUCENE_43.我也尝试过早期的3.x版本.我在这做错了什么?是否可以使用另一个Lucene索引浏览器?
我正在运行Luke java -jar lukeall-4.0.0-ALPHA.jar,我告诉它打开我的应用程序正在生成的索引.
更新:
我已经尝试将我的CLASSPATH设置为包含lucene-core:4.3.1:jar.这没有用.
卢克抛出这个错误:
java.lang.IllegalArgumentException:名称为"Lucene42"的类型为org.apache.lucene.codecs.Codec的SPI类不存在.您需要将支持此SPI的相应JAR文件添加到类路径中.当前类路径支持以下名称:[Lucene40,Lucene3x,SimpleText,Appending] java.lang.IllegalArgumentException:类型为org.apache.lucene.codecs的SPI类名称为"Lucene42"的.Codec不存在.您需要将支持此SPI的相应JAR文件添加到类路径中.当前类路径支持以下名称:[Lucene40,Lucene3x,SimpleText,Appending]
非常感谢!
我已经为Apache BeanUtils库实现了一个转换器,用于将String转换为枚举常量:
class EnumConverter implements Converter {
@Override
public <T> T convert(Class<T> tClass, Object o) {
String enumValName = (String) o;
Enum[] enumConstants = (Enum[]) tClass.getEnumConstants();
for (Enum enumConstant : enumConstants) {
if (enumConstant.name().equals(enumValName)) {
return (T) enumConstant;
}
}
throw new ConversionException(String.format("Failed to convert %s value to %s class", enumValName, tClass.toString()));
}
}
Run Code Online (Sandbox Code Playgroud)
我用以下方式使用它:
// Register my converter
ConvertUtils.register(new EnumConverter(), Enum.class);
Map<String, String> propMap = new HashMap<String, String>();
// fill property map
BeanUtils.populate(myBean, propMap);
Run Code Online (Sandbox Code Playgroud)
不幸的是myBean实例中的setter除了ConcreteEnumClass枚举,而不是java.lang.Enum,这就是我在BeanUtils.populate方法调用期间收到以下异常的原因:
org.apache.commons.beanutils.ConversionException: Default conversion to …Run Code Online (Sandbox Code Playgroud) 我为一些开源运行我自己的小Maven仓库.我没有专用服务器,所以我使用谷歌代码库,部署到文件系统,然后提交和推送.适合我的作品.
但是一些Maven工具正在寻找a nexus-maven-repository-index.properties和索引(在GZ中).我想生成这个索引
我怎样才能做到这一点?是否有能够生成索引的工具(Java main)?还提示如何使用适当的Nexus Jars和一些命令行工具.
我正在寻找一种方法来在Linux下的bash中的zip文件中列出目录.我发现有一个叫做的应用程序zipinfo,它可以列出zip中的路径(没有任何额外的噪音,必须解析通过(zipinfo -1 foo.zip),而不是unzip -l foo.zip).但是,这还不够好,我想知道是否有更好的方法.