pup*_*eno 16 java amazon-s3 maven
我在S3中有一个私有存储库,用于发布一个库,然后我在另一个项目中使用.
要发布,我有这个设置:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
<extensions>
<extension>
<groupId>com.allogy.maven.wagon</groupId>
<artifactId>maven-s3-wagon</artifactId>
<version>1.1.0</version>
</extension>
</extensions>
</build>
<distributionManagement>
<repository>
<id>projectx-aws-release</id>
<name>ProjectX AWS Release Repository</name>
<url>s3://projectx-support/maven2</url>
</repository>
<snapshotRepository>
<id>projectx-aws-snapshots</id>
<name>Projectx AWS Snapshot Repository</name>
<url>s3://projectx-support/maven2</url>
</snapshotRepository>
</distributionManagement>
Run Code Online (Sandbox Code Playgroud)
然后,在使用该库的应用程序上:
<build>
...
<extensions>
<extension>
<groupId>com.allogy.maven.wagon</groupId>
<artifactId>maven-s3-wagon</artifactId>
<version>1.1.0</version>
</extension>
</extensions>
</build>
<repositories>
<repository>
<id>projectX-aws</id>
<url>s3://projectX-support/maven2</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
Run Code Online (Sandbox Code Playgroud)
拥有.circleci/settings.xml
S3 repo的凭据:
<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">
<servers>
<server>
<id>projectx-aws</id>
<username>....</username>
<password>....</password>
</server>
</servers>
</settings>
Run Code Online (Sandbox Code Playgroud)
当运行mvn --batch-mode --settings .circleci/settings.xml dependency:go-offline
奇怪的事情时.它会快速下载一些依赖项:
mvn --batch-mode --settings .circleci/settings.xml dependency:go-offline
[INFO] Scanning for projects...
Downloading: http://repo.maven.apache.org/maven2/com/allogy/maven/wagon/maven-s3-wagon/1.1.0/maven-s3-wagon-1.1.0.pom
Downloaded: http://repo.maven.apache.org/maven2/com/allogy/maven/wagon/maven-s3-wagon/1.1.0/maven-s3-wagon-1.1.0.pom (7 KB at 47.0 KB/sec)
Downloading: http://repo.maven.apache.org/maven2/com/allogy/allogy-maven-pom-oss/2.0/allogy-maven-pom-oss-2.0.pom
Downloaded: http://repo.maven.apache.org/maven2/com/allogy/allogy-maven-pom-oss/2.0/allogy-maven-pom-oss-2.0.pom (10 KB at 808.4 KB/sec)
Downloading: http://repo.maven.apache.org/maven2/com/google/guava/guava/15.0/guava-15.0.pom
Downloaded: http://repo.maven.apache.org/maven2/com/google/guava/guava/15.0/guava-15.0.pom (7 KB at 508.8 KB/sec)
.
.
.
Downloading: http://repo.maven.apache.org/maven2/org/apache/apache/16/apache-16.pom
Downloaded: http://repo.maven.apache.org/maven2/org/apache/apache/16/apache-16.pom (16 KB at 1879.5 KB/sec)
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-dependency-plugin/2.10/maven-dependency-plugin-2.10.jar
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-dependency-plugin/2.10/maven-dependency-plugin-2.10.jar (157 KB at 12014.5 KB/sec)
Run Code Online (Sandbox Code Playgroud)
然后它显示了这个:
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building projectx 1.0.0-beta.2
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> maven-dependency-plugin:2.10:go-offline (default-cli) @ projectx >>>
[INFO]
[INFO] --- maven-dependency-plugin:2.10:resolve-plugins (resolve-plugins) @ projectx ---
Run Code Online (Sandbox Code Playgroud)
并下载更多deps:
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact/2.2.1/maven-artifact-2.2.1.pom
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact/2.2.1/maven-artifact-2.2.1.pom (2 KB at 171.5 KB/sec)
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/maven/2.2.1/maven-2.2.1.pom
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/maven/2.2.1/maven-2.2.1.pom (22 KB at 2431.5 KB/sec)
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/11/maven-parent-11.pom
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/11/maven-parent-11.pom (32 KB at 3516.6 KB/sec)
.
.
.
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.jar
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.jar (29 KB at 4118.2 KB/sec)
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-jar-plugin/2.2/maven-jar-plugin-2.2.jar
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-jar-plugin/2.2/maven-jar-plugin-2.2.jar (27 KB at 3252.7 KB/sec)
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-install-plugin/2.3/maven-install-plugin-2.3.jar
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-install-plugin/2.3/maven-install-plugin-2.3.jar (23 KB at 2775.0 KB/sec)
Run Code Online (Sandbox Code Playgroud)
但后来它试图从S3存储库下载应该是并且在Maven Central中的jar:
[INFO] Plugin Resolved: copy-rename-maven-plugin-1.0.1.jar
Downloading: s3://projectx-support/maven2/com/coderplus/maven/plugins/copy-rename-maven-plugin/1.0.1/copy-rename-maven-plugin-1.0.1.pom
[INFO] File permissions: Private
[INFO] Logged in - projectx-support
[INFO] Downloading: s3://projectx-support/maven2/com/coderplus/maven/plugins/copy-rename-maven-plugin/1.0.1/copy-rename-maven-plugin-1.0.1.pom
[INFO] Logged off - projectx-support
[INFO] Transfers: 1 Time: 27ms Amount: 0 bytes Throughput: 0.000 bytes/s
Downloading: http://repo.maven.apache.org/maven2/com/coderplus/maven/plugins/copy-rename-maven-plugin/1.0.1/copy-rename-maven-plugin-1.0.1.pom
Downloaded: http://repo.maven.apache.org/maven2/com/coderplus/maven/plugins/copy-rename-maven-plugin/1.0.1/copy-rename-maven-plugin-1.0.1.pom (5 KB at 418.0 KB/sec)
Downloading: s3://projectx-support/maven2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom
[INFO] File permissions: Private
[INFO] Logged in - projectx-support
[INFO] Downloading: s3://projectx-support/maven2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom
[INFO] Logged off - projectx-support
[INFO] Transfers: 1 Time: 11ms Amount: 0 bytes Throughput: 0.000 bytes/s
Downloading: http://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom
Downloaded: http://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom (7 KB at 712.8 KB/sec)
Downloading: s3://projectx-support/maven2/org/apache/maven/maven-model/2.0.9/maven-model-2.0.9.jar
[INFO] File permissions: Private
[INFO] Logged in - projectx-support
[INFO] Downloading: s3://projectx-support/maven2/org/apache/maven/maven-model/2.0.9/maven-model-2.0.9.jar
[INFO] Logged off - projectx-support
[INFO] Transfers: 1 Time: 12ms Amount: 0 bytes Throughput: 0.000 bytes/s
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/maven-model/2.0.9/maven-model-2.0.9.jar
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/maven-model/2.0.9/maven-model-2.0.9.jar (86 KB at 9475.0 KB/sec)
Downloading: s3://projectx-support/maven2/org/apache/maven/maven-project/2.0.9/maven-project-2.0.9.jar
[INFO] File permissions: Private
[INFO] Logged in - projectx-support
[INFO] Downloading: s3://projectx-support/maven2/org/apache/maven/maven-project/2.0.9/maven-project-2.0.9.jar
[INFO] Logged off - projectx-support
[INFO] Transfers: 1 Time: 12ms Amount: 0 bytes Throughput: 0.000 bytes/s
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/maven-project/2.0.9/maven-project-2.0.9.jar
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/maven-project/2.0.9/maven-project-2.0.9.jar (119 KB at 11892.6 KB/sec)
Downloading: s3://projectx-support/maven2/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.jar
Run Code Online (Sandbox Code Playgroud)
一段时间后,AWS开始抛出Connection refused
错误(某些保护系统可能?)并且不会下载仅存在于S3 repo中的依赖关系:
Downloading: s3://projectx-support/maven2/tech/projectx/projectxcommon/1.0.0-SNAPSHOT/maven-metadata.xml
[WARN] s3://projectx-support/maven2 - Connection refused
[INFO] Logged off - projectx-support
[WARNING] Could not transfer metadata tech.projectx:projectxcommon:1.0.0-SNAPSHOT/maven-metadata.xml from/to projectx-aws (s3://projectx-support/maven2): Could not connect to repository
[WARNING] Failure to transfer tech.projectx:projectxcommon:1.0.0-SNAPSHOT/maven-metadata.xml from s3://projectx-support/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of projectx-aws has elapsed or updates are forced. Original error: Could not transfer metadata tech.projectx:projectxcommon:1.0.0-SNAPSHOT/maven-metadata.xml from/to projectx-aws (s3://projectx-support/maven2): Could not connect to repository
Downloading: s3://projectx-support/maven2/tech/projectx/projectxcommon/1.0.0-SNAPSHOT/projectxcommon-1.0.0-SNAPSHOT.pom
[WARN] s3://projectx-support/maven2 - Connection refused
[INFO] Logged off - projectx-support
Run Code Online (Sandbox Code Playgroud)
这导致编译失败:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 17.929s
[INFO] Finished at: Wed Apr 18 16:03:19 UTC 2018
[INFO] Final Memory: 32M/1067M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project projectx: Could not resolve dependencies for project tech.projectx:projectx:jar:1.0.0-beta.2: Failed to collect dependencies for [tech.projectx:projectxcommon:jar:1.0.0-SNAPSHOT (compile), org.projectlombok:lombok:jar:1.16.20 (compile), org.springframework:spring-web:jar:5.0.5.RELEASE (compile), org.springframework.retry:spring-retry:jar:1.2.2.RELEASE (compile), com.fasterxml.jackson.core:jackson-databind:jar:2.9.5 (compile), org.kordamp.ikonli:ikonli-javafx:jar:2.1.1 (compile), org.kordamp.ikonli:ikonli-fontawesome5-pack:jar:2.1.1 (compile), net.harawata:appdirs:jar:1.0.1 (compile), io.sentry:sentry:jar:1.7.3 (compile), org.javassist:javassist:jar:3.22.0-CR2 (compile), junit:junit:jar:4.12 (test)]: Failed to read artifact descriptor for tech.projectx:projectxcommon:jar:1.0.0-SNAPSHOT: Could not transfer artifact tech.projectx:projectxcommon:pom:1.0.0-SNAPSHOT from/to projectx-aws (s3://projectx-support/maven2): Could not connect to repository: Couldn't initialize a SAX driver to create an XMLReader: SAX2 driver class org.apache.xerces.parsers.SAXParser not found -> [Help 1]
Run Code Online (Sandbox Code Playgroud)
Any ideas what's going on? This seems to be non-deterministic. It comes and goes with changes that shouldn't have any effect on it, although it seems to be quite consistent in that re-building doesn't seem to change the outcome. I'm sure the credentials work because they are used in two projects and one is working and they are the same that were used in this project when it was working.
This has been happening since I switched from Gradle to Maven, but since that's a completely different system, it's not a very useful comparison I believe.
When I run mvn --batch-mode --settings .circleci/settings.xml dependency:go-offline install -e -X
on my own computer, after deleting ~/.m2/repository, the output looks like this: https://gist.github.com/pupeno/da4f53a6e9673ff611909021306191a4#file-maven-local-machine-log and when I do the same in CircleCI, it looks like this: https://gist.github.com/pupeno/da4f53a6e9673ff611909021306191a4#file-maven-circleci-log
When listing the repositories present, following the answer at How can I ask Maven for a list of the default repositories?, I see this:
<repositories>
<repository>
<id>projectx-aws</id>
<url>s3://projectx-support/maven2</url>
<layout>default</layout>
<locations class="linked-hash-map">
<entry>
<string></string>
<inputLocation>
<lineNumber>461</lineNumber>
<columnNumber>21</columnNumber>
<source>
<modelId>tech.projectx:projectx:1.0.0-beta.2</modelId>
<location>C:\Users\pupeno\Documents\projectx\code\projectx\pom.xml</location>
</source>
</inputLocation>
</entry>
<entry>
<string>id</string>
<inputLocation>
<lineNumber>462</lineNumber>
<columnNumber>17</columnNumber>
<source reference="../../../entry/inputLocation/source"/>
</inputLocation>
</entry>
<entry>
<string>url</string>
<inputLocation>
<lineNumber>463</lineNumber>
<columnNumber>18</columnNumber>
<source reference="../../../entry/inputLocation/source"/>
</inputLocation>
</entry>
</locations>
<releases>
<enabled>true</enabled>
<locations class="linked-hash-map">
<entry>
<string></string>
<inputLocation>
<lineNumber>464</lineNumber>
<columnNumber>23</columnNumber>
<source reference="../../../../../locations/entry/inputLocation/source"/>
</inputLocation>
</entry>
<entry>
<string>enabled</string>
<inputLocation>
<lineNumber>465</lineNumber>
<columnNumber>26</columnNumber>
<source reference="../../../../../locations/entry/inputLocation/source"/>
</inputLocation>
</entry>
</locations>
</releases>
<snapshots>
<enabled>true</enabled>
<locations class="linked-hash-map">
<entry>
<string></string>
<inputLocation>
<lineNumber>467</lineNumber>
<columnNumber>24</columnNumber>
<source reference="../../../../../locations/entry/inputLocation/source"/>
</inputLocation>
</entry>
<entry>
<string>enabled</string>
<inputLocation>
<lineNumber>468</lineNumber>
<columnNumber>26</columnNumber>
<source reference="../../../../../locations/entry/inputLocation/source"/>
</inputLocation>
</entry>
</locations>
</snapshots>
</repository>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
Run Code Online (Sandbox Code Playgroud)
s3://projectx-support/maven2/tech/projectx/projectxcommon/1.0.0-SNAPSHOT/maven-metadata.xml
is present and contains the following:
<?xml version="1.0" encoding="UTF-8"?>
<metadata modelVersion="1.1.0">
<groupId>tech.projectx</groupId>
<artifactId>projectxcommon</artifactId>
<version>1.0.0-SNAPSHOT</version>
<versioning>
<snapshot>
<timestamp>20180418.113836</timestamp>
<buildNumber>5</buildNumber>
</snapshot>
<lastUpdated>20180418113836</lastUpdated>
<snapshotVersions>
<snapshotVersion>
<extension>jar</extension>
<value>1.0.0-20180418.113836-5</value>
<updated>20180418113836</updated>
</snapshotVersion>
<snapshotVersion>
<extension>pom</extension>
<value>1.0.0-20180418.113836-5</value>
<updated>20180418113836</updated>
</snapshotVersion>
</snapshotVersions>
</versioning>
</metadata>
Run Code Online (Sandbox Code Playgroud)
The dependency tree of my app looks like this:
> mvn dependency:tree
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------< tech.projectx:projectx >------------------------
[INFO] Building projectx 1.0.0-beta.2
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.10:tree (default-cli) @ projectx ---
[INFO] tech.projectx:projectx:jar:1.0.0-beta.2
[INFO] +- tech.projectx:projectxcommon:jar:1.0.0-SNAPSHOT:compile
[INFO] | +- org.bouncycastle:bcprov-jdk15on:jar:1.59:compile
[INFO] | +- javax.validation:validation-api:jar:2.0.1.Final:compile
[INFO] | +- org.hibernate.validator:hibernate-validator:jar:6.0.9.Final:compile
[INFO] | | +- org.jboss.logging:jboss-logging:jar:3.3.2.Final:compile
[INFO] | | \- com.fasterxml:classmate:jar:1.3.4:compile
[INFO] | +- org.glassfish:javax.el:jar:3.0.1-b10:compile
[INFO] | +- org.springframework:spring-context:jar:5.0.5.RELEASE:compile
[INFO] | | +- org.springframework:spring-aop:jar:5.0.5.RELEASE:compile
[INFO] | | \- org.springframework:spring-expression:jar:5.0.5.RELEASE:compile
[INFO] | +- com.pubnub:pubnub-gson:jar:4.19.0:compile
[INFO] | | +- com.squareup.retrofit2:retrofit:jar:2.3.0:compile
[INFO] | | +- com.squareup.okhttp3:okhttp:jar:3.9.1:compile
[INFO] | | | \- com.squareup.okio:okio:jar:1.13.0:compile
[INFO] | | +- com.squareup.okhttp3:logging-interceptor:jar:3.9.1:compile
[INFO] | | +- com.google.code.gson:gson:jar:2.8.2:compile
[INFO] | | \- com.squareup.retrofit2:converter-gson:jar:2.3.0:compile
[INFO] | +- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.5:compile
[INFO] | +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.5:compile
[INFO] | \- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.5:compile
[INFO] +- org.projectlombok:lombok:jar:1.16.20:compile
[INFO] +- org.springframework:spring-web:jar:5.0.5.RELEASE:compile
[INFO] | +- org.springframework:spring-beans:jar:5.0.5.RELEASE:compile
[INFO] | \- org.springframework:spring-core:jar:5.0.5.RELEASE:compile
[INFO] | \- org.springframework:spring-jcl:jar:5.0.5.RELEASE:compile
[INFO] +- org.springframework.retry:spring-retry:jar:1.2.2.RELEASE:compile
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.9.5:compile
[INFO] | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile
[INFO] | \- com.fasterxml.jackson.core:jackson-core:jar:2.9.5:compile
[INFO] +- org.kordamp.ikonli:ikonli-javafx:jar:2.1.1:compile
[INFO] | \- org.kordamp.ikonli:ikonli-core:jar:2.1.1:compile
[INFO] +- org.kordamp.ikonli:ikonli-fontawesome5-pack:jar:2.1.1:compile
[INFO] +- net.harawata:appdirs:jar:1.0.1:compile
[INFO] | +- org.slf4j:slf4j-api:jar:1.7.25:compile
[INFO] | \- net.java.dev.jna:jna-platform:jar:4.5.0:compile
[INFO] | \- net.java.dev.jna:jna:jar:4.5.0:compile
[INFO] +- io.sentry:sentry:jar:1.7.3:compile
[INFO] +- org.javassist:javassist:jar:3.22.0-CR2:compile
[INFO] \- junit:junit:jar:4.12:test
[INFO] \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.188 s
[INFO] Finished at: 2018-04-23T20:38:39+01:00
[INFO] ------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
My .cicleci\config.yml
file looks like this:
# Java Gradle CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-java/ for more details
#
version: 2
jobs:
build:
docker:
# specify the version you desire here
- image: circleci/jdk8:0.1.1
# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
# documented at https://circleci.com/docs/2.0/circleci-images/
# - image: circleci/postgres:9.4
working_directory: ~/repo
environment:
# Customize the JVM maximum heap limit
JVM_OPTS: -Xmx3200m
TERM: dumb
steps:
- checkout
- run: apt-get update
- run: apt-get install --assume-yes maven
- restore_cache:
key: projectx-{{ checksum "pom.xml" }}
- run: mvn --batch-mode --settings .circleci/settings.xml dependency:go-offline install -e -X
- save_cache:
paths:
- ~/.m2
key: projectx-{{ checksum "pom.xml" }}
- run: mvn --batch-mode --settings .circleci/settings.xml test
Run Code Online (Sandbox Code Playgroud)
I have logging enabled for this bucket and one entry looks like this (with the expected 404):
These are the last 3 accesses to maven-metadata.xml
:
主要问题可能是对存储库的请求太多Amazon S3
。
Amazon S3
通过分析日志我们可以看到在短短1-3秒的时间内就有超过120个下载文件的请求:
Amazon S3
,然后从 中下载Maven Central
,这些请求是Amazon S3
无用的要解决这个问题,至少有2个解决方案:
强制maven首先从下载artefact Maven Central
,然后从中休息Amazon S3
,以减少对Amazon S3
. 这是一个很好的解决方案,但请记住,如果您有更多的工件可供下载,那么Amazon S3
您只会遇到同样的问题!
默认情况下,它在存储库中Maven Central
排在最后,要设置最高优先级并首先从 中下载Maven Center
,我们必须手动将其添加到存储库中的第一个位置,因为存储库的顺序也将决定存储库访问的顺序。(来源):
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>projectX-aws</id>
<url>s3://projectX-support/maven2</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
Run Code Online (Sandbox Code Playgroud)Amazon S3
的请求限制
。此解决方案始终有效,但您的 Amazon S3 将收到许多无用的请求。所以解决这个问题的最好方法就是混合这两种解决方案。:)
归档时间: |
|
查看次数: |
2191 次 |
最近记录: |