Android UPnP协议开源项目Cling的下载与编译

date: 2016.08.02; modification:2016.08.02

目录:

1 下载

git clone https://github.com/4thline/cling.git

2 cling编译

2.1 官方编译说明:

mvn clean install

我在编译的过程中, 报了很多错误, 具体的解决方案如下(问题排列顺序按照我编译遇到问题的顺序排列, 如果不想要看具体步骤, 可以直接跳到后面的总结去看: 总结):

2.2 编译错误: test错误

Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (default-test) on project cling-core: There are test failures.

网络搜索结果:

方法1:

pom中增加:

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.19.1</version>
    </plugin>
 </plugins>

方法2:

mvn dependency::tree
mvn clean install -U -DskipTests

结果: 通过-DskipTests选项, 可以跳过test报错. 但是又会有其他报错.

2.3 编译错误: javadoc错误

解决: 将pom.xml中的如下行注释掉:

<additionalparam>-Xdoclint:none</additionalparam>

2.4 编译错误: Cling Demo Android Browser编译失败

解决: 该问题会提示指定android sdk路径, 通过如下方法指定:

mvn clean install -e -U -DskipTests -Dandroid.sdk.path=/home/xxxx/xxx/android-sdk-linux

经过上述的步骤, 大部分已经可以编译通过, 只剩Cling Website和Cling Distribution 两个没有编译通过. 这时候生成的cling-core-2.1.2-SNAPSHOT.jar和 cling-support-2.1.2-SNAPSHOT.jar两个文件, 其实已经可以用了.

如果想继续完成全部编译(虽然不一定有什么用). 需要继续解决下面的问题:

2.5 编译错误: onejar找不到

问题描述: cling项目的pom.xml中, 搜索onejar, 可以看到其指向的下载url为:

http://onejar-maven-plugin.googlecode.com/svn/mavenrepo

但是这个已经下载不到了, 报错也是报这个.

解决:

  1. 如果幸运的话, 应该还可以在这里找到下载: https://code.google.com/archive/p/onejar-maven-plugin/source/default/source

点击其中的download. 可以下载到: source-archive.zip

  1. 将其中解压出的mavenrepo/org/dstovall文件夹, 手动拷贝到: ~/.m2/repository/org/, 覆盖其中原本的dstovall(可以看到, 其中原本的该文件夹下, 是没有jar包的, 但是新覆盖的这个就有).

  2. 修改cling工程中的pom.xml, 注释掉这几行:

    onejar-maven-plugin.googlecode.com http://onejar-maven-plugin.googlecode.com/svn/mavenrepo false

再次运行:

mvn clean install -e -U -DskipTests -Dandroid.sdk.path=/home/xxxx/xxx/android-sdk-linux

即可全部编译成功. 成功的log如下:

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] Cling .............................................. SUCCESS [  0.146 s]
[INFO] Cling Core ......................................... SUCCESS [ 14.114 s]
[INFO] Cling Demo ......................................... SUCCESS [  0.003 s]
[INFO] Cling Demo Android ................................. SUCCESS [  0.003 s]
[INFO] Cling Demo Android Browser ......................... SUCCESS [  6.902 s]
[INFO] Cling Demo Android Light ........................... SUCCESS [  6.176 s]
[INFO] Cling Support ...................................... SUCCESS [  6.660 s]
[INFO] Cling Workbench .................................... SUCCESS [02:21 min]
[INFO] Cling MediaRenderer ................................ SUCCESS [  0.621 s]
[INFO] Cling Website ...................................... SUCCESS [  0.003 s]
[INFO] Cling Distribution ................................. SUCCESS [ 38.867 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

2.6 编译总结

如果只需要upnp库支持所需的cling-core与cling-support两个包, 则只需要:

  1. 将pom.xml中的如下行注释掉: -Xdoclint:none
  2. mvn clean install -e -U -DskipTests -Dandroid.sdk.path=/home/xxxx/xxx/android-sdk-linux # 其中android.sdk.path指向响应的android sdk.

这样就会生成所需的:

./support/target/cling-support-2.1.0.jar
./core/target/cling-core-2.1.0.jar

编译完成后, 其他使用cling所需的jar包, 也可以在~/.m2中搜索到.

如果想完成全部编译, 继续执行完: 编译错误: onejar找不到