8

我在一个工业化的大型 maven 项目上工作,在一个应用程序模块上,我需要能够向 Android 发送推送通知(使用新的 Google Cloud Messaging)。

谷歌似乎为自己提供了服务器端库来发送通知,并且根据邮件列表,他们不提供任何 Maven 存储库。

谷歌文档中提到的第一步是:

Copy the gcm-server.jar file from the SDK's gcm-server/dist directory to your server classpath.

我不打算这样做,所以我已将 jar 添加到我的本地存储库并将其添加到我们的企业 Nexus。

mvn install:install-file
 -Dfile=gcm-server.jar
 -Dsources=gcm-server-sources.jar
 -DgroupId=com.google.android.gcm
 -DartifactId=gcm-server
 -Dversion=r3
 -DgeneratePom=true
 -Dpackaging=jar

但我刚刚注意到该库具有依赖项(simple-json、mockito 和 junit)。如果它们是运行时或测试,则并不精确,但我想在运行时只使用 simple-json。我认为从我们的 Nexus 检索 GCM 依赖项也应该允许检索像这个 simple-json 库这样的传递依赖项,对吗?

因此我应该怎么做?我应该自己为我不拥有的项目创建一个 pom 文件,然后将项目导入我的 maven 存储库-DpomFile=my-custom-pom.xml吗?

谢谢

4

4 回答 4

22

最后,我已经结束了创建自己的 pom。

我在 github 上创建了一个 maven 存储库: https ://github.com/slorber/gcm-server-repository

因此,任何人都可以使用 maven 及其传递依赖项下载这个 jar。

我已经添加了文件/命令,以便您知道我是如何完成的。

添加存储库:

<repository>
    <id>gcm-server-repository</id>
    <url>https://raw.githubusercontent.com/slorber/gcm-server-repository/master/releases/</url>
</repository>

和依赖:

<dependency>
    <groupId>com.google.android.gcm</groupId>
    <artifactId>gcm-server</artifactId>
    <version>1.0.2</version>
</dependency>
于 2012-08-16T16:55:39.413 回答
3

使用:

 <dependency>
        <groupId>com.google.android.gcm</groupId>
        <artifactId>gcm-server</artifactId>
        <version>1.0.2</version>
 </dependency>

<repository>
        <id>gcm-server-repository</id>
        <url>https://github.com/slorber/gcm-server-repository/raw/master/releases/</url>
</repository>
于 2012-10-25T20:44:30.930 回答
3

请参阅https://groups.google.com/forum/#!msg/android-gcm/oukjcHpbLj4/lql_IzpjmUkJ%5B1-25%5D

谷歌似乎根本没有在任何 Maven 存储库中发布这个 jar。你有两个选择:

  1. 在存储库中包含所有(传递)依赖的 jar
  2. (就像你说的)创建你自己的 pom 文件

我会选择第二种选择。这并不难。

于 2012-08-16T15:24:43.610 回答
0

如果您使用 Linux 或 Mac,您可以使用以下脚本保存为 mvn-intall-jar:

#!/bin/sh
# Script to mavenize any JAR files
# by Muhammad Ichsan <ichsan@gmail.com>
#

desc=$1
binary=$2
source=$3

if [ $# -lt 2 ]; then
    echo "Usage $0 <DESCRIPTION> <BINARY JAR FILE> [SOURCE JAR FILE]"
    echo "e.g. $0 com.google.android.gcm/gcm-server/2.1.4 gcm-server.jar gcm-server-src.jar"
    exit 1
fi

groupId=`echo $desc | awk -F '/' '{print $1}'`
artifactId=`echo $desc | awk -F '/' '{print $2}'`
version=`echo $desc | awk -F '/' '{print $3}'`

if [ "$version" = "" ]; then
    echo "Invalid DESCRIPTION"
    exit 1
fi

if [ "$source" != "" ]; then
    mvn install:install-file\
 -Dfile=$binary\
 -DgroupId=$groupId\
 -DartifactId=$artifactId\
 -Dversion=$version\
 -DgeneratePom=true\
 -Dpackaging=jar\
 -Dsources=$source
else
    mvn install:install-file\
 -Dfile=$binary\
 -DgroupId=$groupId\
 -DartifactId=$artifactId\
 -Dversion=$version\
 -DgeneratePom=true\
 -Dpackaging=jar
fi

并使用这个:

<dependency>
    <groupId>com.google.android.gcm</groupId>
    <artifactId>gcm-server</artifactId>
    <version>1.0.2</version>
</dependency>
于 2013-02-21T05:14:13.783 回答