小编car*_*ing的帖子

以编程方式解析插件之外的Maven依赖关系 - 获取RepositorySystemSession和RepositorySystem

也许这将是一个比我原先想象的更大的任务,但无论如何,我正在尝试MavenProject从文件加载一个文件,然后解决它的依赖关系.我有两个位的代码,但我缺少一些我需要的对象引用; 特别是我需要得到RepositorySystemSession和的实例 RepositorySystem.有小费吗?

注意:我用标记了这个问题,但这不是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)

java maven-plugin maven aether

12
推荐指数
2
解决办法
2万
查看次数

如何使用Jersey Client对启用了JAAS的Web服务器进行身份验证?

我有以下场景:

服务器: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页面成功登录.

我似乎错过了什么?

java jersey maven

11
推荐指数
2
解决办法
4万
查看次数

Maven构建错误没有可用于org.codehaus.jackson的版本:jackson-core-asl:jar:[1.8,1.9]在指定范围内

我从今天早上做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)

jackson maven-3 maven-metadata

11
推荐指数
2
解决办法
1万
查看次数

快照jar的maven-metadata.xml中的时间戳比实际jar的时间戳多一秒?

我遇到了一个奇怪的问题:

我使用" 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
  • 实际存在的快照jar:userdao-1.0-20170512.111839-6.jar

因为userdao-1.0-20170512.111840-6.jar在Nexus中不存在userdao-1.0-20170512.111839-6.jar,所以应该是正确的,所以它是错误的.

谁能告诉我为什么以及如何解决它?

nexus maven jenkins maven-metadata

11
推荐指数
3
解决办法
3074
查看次数

部署到nexus时,不会更新maven-metadata.xml

我正在使用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)

nexus maven-3 maven maven-deploy-plugin maven-metadata

10
推荐指数
1
解决办法
2万
查看次数

Bash的最后一个指数

抱歉蹩脚的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部件?

bash shell pattern-matching

10
推荐指数
2
解决办法
1万
查看次数

如何打开Lucene 4.3索引?

我是一个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]

非常感谢!

java lucene

10
推荐指数
2
解决办法
1万
查看次数

使用Apache BeanUtils将String转换为Enum

我已经为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)

java enums javabeans apache-commons

10
推荐指数
1
解决办法
6957
查看次数

如何在没有Nexus/Artifactory/etc的情况下索引Maven仓库?

我为一些开源运行我自己的小Maven仓库.我没有专用服务器,所以我使用谷歌代码库,部署到文件系统,然后提交和推送.适合我的作品.

但是一些Maven工具正在寻找a nexus-maven-repository-index.properties和索引(在GZ中).我想生成这个索引

  1. 摆脱它不在这里的警告
  2. Maven没有尝试回购不存在的人工制品.

我怎样才能做到这一点?是否有能够生成索引的工具(Java main)?还提示如何使用适当的Nexus Jars和一些命令行工具.

repository nexus maven maven-indexer

9
推荐指数
2
解决办法
6213
查看次数

如何获取zip中的目录列表?

我正在寻找一种方法来在Linux下的bash中的zip文件中列出目录.我发现有一个叫做的应用程序zipinfo,它可以列出zip中的路径(没有任何额外的噪音,必须解析通过(zipinfo -1 foo.zip),而不是unzip -l foo.zip).但是,这还不够好,我想知道是否有更好的方法.

linux bash zip unzip

9
推荐指数
1
解决办法
3294
查看次数