之前就在开发机上Build过,好像遇到什么代理的问题了,但很快解决了,没有留下什么记录。等过了好长时间又需要用到thrift,这时环境变了,一切都得重来,依稀记得设置的方式,却又遇到不同的问题。

我下载的版本是0.9.2的Release包,所以不用安装Boost。

安装Ubuntu需要的编译环境(是的elementary os来自ubuntu):

sudo apt-get install libboost-dev libboost-test-dev libboost-program-options-dev libboost-system-dev libboost-filesystem-dev libevent-dev automake libtool flex bison pkg-config g++ libssl-dev

thrift会自动查找当前的开发语言环境,因为我只需用到python、java和C++并且环境都配好了,所以直接Configure:

$ ./configure

代理配置(我没有用这种方式)

$ ./configure --with-java ANT_FLAGS='-Dproxy.enabled=1 -Dproxy.host=proxy.xxx.com -Dproxy.port=8080'

没有问题,然后:

$ make

遇到问题了,执行到 mvn.ant.tasks.download 不动了,肯定是代理问题,按记忆找到了 ./thrift-0.9.2/lib/java/build.pom第292行的proxy设置,修改后make成功。

    <target name="proxy">
        <setproxy proxyhost="proxy.xxx.com" proxyport="8080" />
    </target>

该安装了:

sudo make install

本以为没问题了,可是就在mvn.ant.tasks.download后,有个下载mvn依赖的mvn.init停住不动了,肯定又是代理的事,可是在 ~/.m2/settings.xml里我已经配置了代理啊,一直再用啊~~

然后终于看到了sudoroot用户啊,于是在root用户下创建了 ~/.m2/settings.xml,OK万事大吉!

settings.xml内容如下:

<settings>
    <proxies>
        <proxy>
            <active>true</active>
            <protocol>http</protocol>
            <host>proxy.xxx.com</host>
            <port>8080</port>
            <!--
            <username>proxyuser</username>
            <password>somepassword</password>
            <nonProxyHosts>www.google.com|*.somewhere.com</nonProxyHosts>
            -->
        </proxy>
    </proxies>
    <profiles>
        <profile>
            <id>jdk-1.8</id>
            <activation>
                <activeByDefault>true</activeByDefault>
                <jdk>1.8</jdk>
            </activation>
            <properties>
                <maven.compiler.source>1.8</maven.compiler.source>
                <maven.compiler.target>1.8</maven.compiler.target>
                <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
            </properties>
        </profile>
    </profiles>
</settings>

总之好用了。

参考:https://thrift.apache.org/docs/BuildingFromSource